我是TypeScript的新手,在某种程度上,作为一个例外,我正在尝试为一些Adobe的“ExtendScript”API编写类型定义文件的开头,这些API基于ECMAScript。
由于主机环境不是浏览器,我遇到的问题是Node.js民众在处理混乱的命名空间时由于仍然是单片的lib.d.ts文件而存在同样的问题。
到目前为止,它还不错。 lib.d.ts中的全局范围中有File
的定义,而ExtendScript托管环境也在全局范围内定义File
。但碰撞很小,我可以使用一些虚假的方法来污染File
接口。
我仍然想知道我是不是只想在我的项目中放一个lib.d.ts
的副本,把大部分内容抛出来并告诉编译器使用它。
有办法吗?我看不到任何tsc
编译器选项来覆盖lib.d.ts
。我也没有看到我在VS中指定任何自定义编译器选项的位置。
答案 0 :(得分:2)
您可以将--nolib
标志传递给TypeScript编译器,以从编译中删除lib.d.ts
个定义...
tsc --nolib app.ts
这将彻底删除全局范围内的所有内容,因此您必须定义所需的所有内容,在您的情况下可能正是您想要的。
答案 1 :(得分:2)
您可以创建另一个文件,例如mylib.d.ts,并在那里放置必要的声明。 TypeScript会将接口声明合并为一个。例如:
// First.d.ts
export interface IProtocol {
method1(): string;
}
// Second.d.ts
export interface IProtocol {
method2(): string;
}
将自动合并到单个界面中,并且这两种方法都可用于您应用中的IProtocol实例。
您甚至可以在.d.ts文件中声明方法重载。标准.ts文件中无法做到的事情。