2016-04-25 287 views
15

我一直在尋找在打字稿手冊,我似乎無法找到答案。typescript:如果typings(或tsd)不可用,該怎麼辦?

如果我使用的圖書館沒有類型存在什麼是我的選擇。

之一是創建分型文件,但這個我真的不希望這樣做。

我有哪些其他的選擇,我似乎記得某種「聲明」的關鍵字?

或者也可以是在tsconfig?

我假設有聲明這個變量(類型)在全球範圍所以每次我用它時,它只是工作的一種方式。

而且我認爲有一種方法只是聲明它只在一個文件中可用。

我對此還是很困惑。

當然最好的辦法是包括分型文件,但是這不會始終可用。

任何幫助非常感激

感謝

回答

8

如果您主要關注的是剛剛擺脫錯誤的,你可以簡單的寫declare var MyUntypedLibrary: any;代碼以上,其中MyUntypedLibrary是您的依賴關係的全局引用的名稱。

如果您需要在幾個文件中這一參考,不想重複自己,你可以把它寫在任何文件的頂部,上面的任何命名空間,這將是提供給整個項目。如果你有許多無類型的依賴關係,那麼在你定義這些依賴關係的地方有一個單獨的ts文件可能是個好主意。

注意:使用本地模塊時可以正常工作。我想猜想如果使用外部模塊並希望有一個地方爲它們定義一個隱式依賴關係,那麼這可能會更麻煩,但是每個模塊都應該在內部處理它們自己的依賴關係。

1

雖然最好是創建您自己的定義文件(.d.ts),克隆https://github.com/DefinitelyTyped/DefinitelyTyped庫,添加到它,並創建一個pull請求回到他們的後備箱;你的方式想要一個更快的解決方案。

你可以編寫自己的簡單定義文件對應於您的需求,並把它添加到您的項目,因此讓你遠離正在等待的定義接受/讀取DefTyped幹線合併。

但是你可以寫你的簡單DEF文件,反正創建拉入請求,小DEF文件總比沒有DEF文件更好;)

附加說明,創建定義:http://definitelytyped.org/guides/creating.html

簡單的例子:

interface JQuery { 

    /* wrapped plugins */ 

    dynatree(options: any): any; 

    multiselect(): JQuery; 
    multiselect(MultiSelectSettings): any; 
    multiselect(command: string): any; 

    ajaxSubmit(options: any); 
    layout(options: any); 

    colpick(options?: any); 
    colpickHide(); 

    idcDataTable(options?: any); 

    dragscrollable(options: any); 

    /* wrapped plugins - END */ 
} 

interface JQueryStatic { 
    layout: any; 

    fileDownload: any; 

    pnotify: any; 

    sha256(input: string): string; 
} 
相關問題