2016-11-15 122 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