在TypeScript项目中是否有正确的方法来使用JavaScript模块?
Is there a correct way to use a JavaScript module in a TypeScript project?
我真的希望这不是一个意见问题,我不认为这是…
是否有一个正确的方法来包括一个JS模块在TS项目?如果我不做下面两个步骤中的一个,我的IDE (linter,无论什么)在我使用import * as myPackage from 'myPackage'
时给我TS2307: Cannot find module
。
我使用的步骤是
npm i thePackage --save
typings i -g thePackage --save // assuming it has a typings
如果模块没有类型,你所要做的就是
declare let myPackage:any
这是为了在TS项目中使用外部包所要做的全部吗?还是我错过了重要的一步?
我知道我可以创建一个。d。但是现在,我想掌握ts的窍门,而不想把所有的时间都花在编写这些文件上。
我也一直在阅读DefinitelyTyped
和@types/myPackage
,但我不太了解它…
如果包中有声明文件
在TypeScript 2.0+中,对于包the-package
npm install --save @types/the-package
如果包没有声明文件
如果包没有声明文件,创建一个名为externals.d.ts
的文件,文件如下:
// This file should contain no top-level imports or exports.
declare module "the-package";
在这一点上,您可以在导入包时对它做任何您想做的事情-它以注意:如果您可以从
the-package
导入多个内容,您也可以使用通配符:declare module "the-package/*";
any
的形式出现。
强类型的包
如果你想添加一些类型安全,我们将开始在名为externals
的文件夹中定义模块。
我们写./externals/the-package/index.d.ts
export function foo(): void;
export function bar(x: string): number;
现在将以下内容添加到tsconfig.json
的编译器选项中。
{
"compilerOptions": {
"baseUrl": "./",
"paths": {
"*": ["externals/*"]
}
}
}
现在任何模块都应该先在externals
中查找,然后再在@types
&node_modules
.
注意:这里假设
externals
和tsconfig.json
在同一个目录下。适当地调整。
一旦你的模块完全写出来,你可以发送这个包的PR到DefinitelyTyped,如果你想帮助别人。
相关文章:
- object.仅冻结对象方法.JavaScript
- 快速方法 Javascript/Jquery/etc 检索表单中包含的所有 aspnet:textbox (input)
- 查看整个画布是否被涂成一种颜色的方法.Javascript + processing.js
- 从方法 JavaScript 访问对象变量
- pop()方法javascript没有给出完整的输出
- 如何格式化setInterval方法JavaScript的运行时间
- 正则表达式/替换方法Javascript
- 将vars传递给其他方法javascript
- 寻找一种简化if/else语句的方法.javascript
- focus()或select()方法javascript,在Chrome中性能缓慢
- 未捕获的类型错误:对象没有方法..Javascript
- 对象方法javascript中的方法/函数
- 构造函数中的私有方法(Javascript,坏主意?)
- 查看数组是否有数组的最简单方法?Javascript
- 扁平化数组元素(不是整个数组)的有效方法JavaScript
- 最常用的生成PDF报告的方法(JavaScript,node.js)
- 创建多维数组与地图方法:javascript
- 对象方法Javascript HTML DOM中的多个事件监听器
- 卡住了.adddeventlistener不能在属性内处理我的方法.Javascript
- 任何获取文档选择的x、y、w、h的方法(JavaScript)