如果打字(或 tsd)不可用怎么办?
What to do if a typings (or tsd) is not available?
我正在查看 TypeScript 手册,但似乎找不到答案。
如果我使用的库不存在类型,我有什么选择?
一个是创建类型文件,但我真的不想这样做。
我的其他选择是什么,我似乎记得某种 'declare' 关键字?
或者 tsconfig 中的某些内容?
我假设有一种方法可以全局声明这个变量(类型),所以每次我使用它时,它都会起作用。
而且我认为有一种方法可以声明它仅在一个文件中可用。
当然,最好的方法是包含一个类型文件,但这并不总是可用。
尽管最好是创建您自己的定义文件 (.d.ts),克隆 https://github.com/DefinitelyTyped/DefinitelyTyped 存储库,添加到其中,然后创建一个拉取请求返回到他们的主干;你想要一个更快的解决方案。
您可以根据您的需要编写自己最简单的定义文件,并将其添加到您的项目中,从而避免等待定义被接受/读取以合并到 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;
}
如果您主要关心的只是消除错误,您只需在代码上方写上 declare var MyUntypedLibrary: any;
,其中 MyUntypedLibrary 是全局引用的名称为了你的依赖。
如果您需要在多个文件中引用此引用并且不想自己重复,您可以将其写在任何文件的顶部,在任何名称空间之上,并且它对整个项目都可用。如果您有许多未类型化的依赖项,那么在定义这些依赖项的地方有一个单独的 ts 文件可能是个好主意。
注意:这在使用本地模块时工作正常。我 猜测 如果使用外部模块并希望有一个地方为它们定义隐式依赖关系,这可能会更麻烦,但是每个模块都应该处理自己的依赖关系无论如何在内部。
我正在查看 TypeScript 手册,但似乎找不到答案。
如果我使用的库不存在类型,我有什么选择?
一个是创建类型文件,但我真的不想这样做。
我的其他选择是什么,我似乎记得某种 'declare' 关键字?
或者 tsconfig 中的某些内容?
我假设有一种方法可以全局声明这个变量(类型),所以每次我使用它时,它都会起作用。
而且我认为有一种方法可以声明它仅在一个文件中可用。
当然,最好的方法是包含一个类型文件,但这并不总是可用。
尽管最好是创建您自己的定义文件 (.d.ts),克隆 https://github.com/DefinitelyTyped/DefinitelyTyped 存储库,添加到其中,然后创建一个拉取请求返回到他们的主干;你想要一个更快的解决方案。
您可以根据您的需要编写自己最简单的定义文件,并将其添加到您的项目中,从而避免等待定义被接受/读取以合并到 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;
}
如果您主要关心的只是消除错误,您只需在代码上方写上 declare var MyUntypedLibrary: any;
,其中 MyUntypedLibrary 是全局引用的名称为了你的依赖。
如果您需要在多个文件中引用此引用并且不想自己重复,您可以将其写在任何文件的顶部,在任何名称空间之上,并且它对整个项目都可用。如果您有许多未类型化的依赖项,那么在定义这些依赖项的地方有一个单独的 ts 文件可能是个好主意。
注意:这在使用本地模块时工作正常。我 猜测 如果使用外部模块并希望有一个地方为它们定义隐式依赖关系,这可能会更麻烦,但是每个模块都应该处理自己的依赖关系无论如何在内部。