创建声明文件时我很困惑(d.ts).
例如,我创建了一个NPM包"a"(一个CommonJS模块index.ts):
export interface IPoint { x: number; y: number; } export default function sub(one: IPoint, two: IPoint): IPoint { return { x: one.x - two.x, y: one.y - two.y }; }
编译它并生成adts:
export interface IPoint { x: number; y: number; } export default function sub(one: IPoint, two: IPoint): IPoint;
据我所知,编译器无法为CommonJS生成有效的d.ts.必须使用实用程序作为dts-generator或手动换行:
declare module "a" { export interface IPoint { x: number; y: number; } export default function sub(one: IPoint, two: IPoint): IPoint; }
好.现在我正在做包"b"(取决于"a"):
///import sub from "a" import { IPoint } from "a" export { IPoint } export default function distance(one: IPoint, two: IPoint): number { var s = sub(one, two); return Math.sqrt(s.x * s.x + s.y * s.y); }
好的,它有效.现在想要一个依赖于"b"的包"c"(依此类推).
如何在模块"b"中指定依赖关系(链接到"adts")?试图在"node_modules"中指定?或者将"adts"复制到"b"包中的"/ typings /"目录?然后将"adts"和"bdts"复制到"c"包中的"/ typings /"(依此类推)?
"package.json"中的"typings"部分有什么意义?我写的是"b/package.json":
"typings":"./ bdts"
并在编译"c"时得到错误:
Exported external package typings file 'node_modules/b/b.d.ts' is not a module.
如何为CommonJS模块创建d.ts文件?所以不要手动写"声明模块","参考"等.
Bruno Griede.. 7
据我所知,编译器无法为CommonJS生成有效的d.ts.必须使用实用程序作为dts-generator或手动换行:
实际上没有(从1.6开始).
只需编译模块a
将declaration
标志传递给tsc
.转换器将为您生成声明文件.
你是对的,这些文件不是外部定义文件,而是内部定义文件
然而
如果在模块a中,条目指向生成的文件,则模块b
将能够自动查找和使用这些文件package.json
typings
index.d.ts
模块a:
compîle与declaration
国旗
更新typings
条目以指向生成的.d.ts
文件
模块b:
简单import * as moduleA from 'a'
或import {IPoint} from module 'a'
没有笨拙///
据我所知,编译器无法为CommonJS生成有效的d.ts.必须使用实用程序作为dts-generator或手动换行:
实际上没有(从1.6开始).
只需编译模块a
将declaration
标志传递给tsc
.转换器将为您生成声明文件.
你是对的,这些文件不是外部定义文件,而是内部定义文件
然而
如果在模块a中,条目指向生成的文件,则模块b
将能够自动查找和使用这些文件package.json
typings
index.d.ts
模块a:
compîle与declaration
国旗
更新typings
条目以指向生成的.d.ts
文件
模块b:
简单import * as moduleA from 'a'
或import {IPoint} from module 'a'
没有笨拙///