2016-09-22 37 views
0

我很抱歉這個問題,因爲我知道答案已經在某處存在,但我不認爲我有一個深刻的足夠的理解Typescript甚至知道我應該尋找什麼。我應該把打字稿定義以及如何編寫它們當對象已經有一個定義

我的問題是,我已經加入typeahead稱爲一個jQuery插件以及命名bound窗口對象,它是對我的C#包裝應用上傳達一個全局變量。

這些項目導致錯誤,當我編譯,我想擺脫錯誤的,所以我應該怎麼辦?我想,也許我應該對這些項目產生的定義,但我無法找到該怎麼做任何文件,因爲jquery已經有一個定義,因爲我是從typings安裝jquery定義,它可能出現的window對象也有一個定義。

下面是我得到的錯誤:

Property 'typeahead' does not exist on type 'JQuery'. 
Property 'bound' does not exist on type 'Window'. 

那麼,我該怎麼辦,使錯誤停止?如果我應該寫定義,定義在哪裏去了,以及如何爲已經有定義的對象編寫定義?

我試圖使我的項目的根稱爲index.d.ts文件,但只要我創建了一個文件,裏面有沒有代碼,我得到這個錯誤:

WARNING in ./src/index.d.ts 
Module build failed: Error: Debug Failure. False expression: Output generation failed 

我嘗試添加接口報表,模塊聲明語句和名稱空間聲明語句,並且沒有任何東西可以使錯誤消失。文件名是否錯誤?該文件是否應該在某個位置?

我已閱讀此處的文檔:https://www.typescriptlang.org/docs/handbook/writing-declaration-files.html 但我看不到任何有關定義的位置,或者如何編寫已存在對象的定義。

預先感謝任何幫助任何人都可以給。

編輯

絕對類型的,也不分型包含了我使用的預輸入庫定義,也爲全球bound對象我創建。我需要了解如何手動擺脫這些錯誤。

回答

2

您可以從DefinitelyTyped獲取預輸入的定義,然後你可以將其添加哪個文件都用它來此:

/// <reference path="./pathFromFile/typeahead.d.ts" /> 

如果你想創建或擴展定義的JS庫,你」只要你的參考路徑正確,你就必須創建.d.ts文件,它可以在任何地方使用。我用this guide這對我很有幫助。

+0

DefinitelyTyped沒有爲我使用的鍵盤緩衝庫的定義,它也沒有爲我創造了全球'bound'對象定義。 –

+0

您使用的是哪種版本的typeahead,或者您是否需要定製的定義文件?我放的鏈接是0.11.1。至於聲明全局對象,打字稿1.8 [增大全球範圍內]添加了(https://www.typescriptlang.org/docs/release-notes/typescript-1.8.html#augmenting-globalmodule-scope-from-modules) ,這聽起來像你在找什麼。 – SilentLupin

+0

我正在使用名爲bootstrap-3-typeahead,版本4.0.1的庫。您放入的鏈接是名爲「Twitter Typeahead」的圖書館。 –

相關問題