2014-11-23 59 views
2

我是新来的打字稿,并在一定程度上为excerise,我想写一些Adobe的“ExtendScript”的API,类型定义文件的开头这基于ECMAScript。定制lib.d.ts在VisualStudio的2013

由于主机环境不是浏览器,我有一个Node.js的民间有在处理一个混乱的命名空间同样的问题,由于仍单片lib.d.ts文件。

到目前为止,这还不算太坏。全球范围内的lib.d.ts中定义了File,ExtendScript托管环境也在全局范围内定义了File。但碰撞很小,我可以忍受一些虚假的方法污染File界面。

我还在想,如果我不能在我的项目中只是放入lib.d.ts的副本,请将其大部分扔掉,并告诉编译器使用它。

有没有办法做到这一点?我看不到任何tsc编译器选项来覆盖lib.d.ts。我也没有看到我会在VS中指定任何自定义编译器选项。

回答

2

您可以通过--nolib标志的打字稿编译器从编译删除lib.d.ts定义...

tsc --nolib app.ts 

这将消除绝对一切,从全球范围内,所以你必须定义所有的一切你需要使用,你的情况可能正是你想要的。

+0

这是从VS2013不可能的,据我所知 – 2014-11-23 21:43:27

+0

我认为它曾经是一个配置元素:' false'但我已经在VS2013.4中试过了,它已经没有效果。让我调查。 – Fenton 2014-11-23 22:01:02

+1

我可以找到这方面的历史证据,但我不得不要求@RyanCavanaugh了解更多信息。 – Fenton 2014-11-23 22:31:40

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文件中你无法做到的事情。