2014-11-23 60 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文件中你無法做到的事情。