[英]Is there a correct way to use a JavaScript module in a TypeScript project?
我真的希望这不是一个意见问题,我认为不是......
是否有正确的方法将JS模块包含在TS项目中? 如果我不执行以下两个步骤之一,我的IDE(linter,wahtever)给了我TS2307: Cannot find module
当我import * as myPackage from 'myPackage'
使用行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/*"]
}
}
}
现在,在@types
和node_modules
中@types
之前,应首先在externals
查找任何模块。
注意:这假定
externals
与tsconfig.json
位于同一目录中。 适当调整。
一旦您的模块完全写出,如果您想帮助其他人,您可以将此包的PR发送到DefinitelyTyped。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.