2016-04-25 285 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; 
} 
相关问题