2016-11-15 159 views
0

我想使用外部JavaScript庫(MyLib中),而分型在我XClient.ts文件,所以我創建了外部的lib轉儲聲明文件,(MYLIB。 d.ts)當我導入到MYLIB X客戶端,一切都在X客戶端的構造函數,但打字稿編譯器扔錯誤OK AT「只讀_lib:MyLib中;」 XClient.ts打字稿編譯器拋出錯誤:「錯誤TS2304:找不到名稱」中

編譯器錯誤:「錯誤TS2304:找不到名稱'MyLib'

如何正確使用外部函數庫,以及爲什麼編譯器會拋出錯誤?

// XClient.ts 

import * as $ from "jquery"; 
import * as MyLib from "myLib"; 

export class XClient { 
    readonly _modelId: string; 
    readonly _lib: MyLib; 

    constructor(modelId: string) { 
     this._modelId = modelId; 

     this._lib = new MyLib(this._modelId); 
    } 
} 

// myLib.d.ts 

declare var inner: any; 
declare module "myLib" { 
    export = inner; 
} 

回答

0

Cannot find name 'MyLib'

它那裏作爲可變但不是作爲一個類型。更多內容:https://basarat.gitbooks.io/typescript/content/docs/project/declarationspaces.html

修復

大概:

declare module "myLib" { 
    var inner: any; 
    type inner = any; 
    export = inner; 
} 
+0

當我嘗試上面的代碼,編譯器拋出錯誤。 ' message:'A'declare'modifier can not be used in a already ambient context。'' – oguzh4n

+0

@ oguzh4n我的不好。已更新回答 – basarat

+0

非常有趣的做法,我很困惑:) – oguzh4n