我真的希望这不是意见问题,我认为不是......
是否有正确的方法在JS项目中包含JS模块?如果我不执行以下两个步骤之一,当我使用行TS2307: Cannot find module
时,我的IDE(linter,wahtever)会给我import * as myPackage from 'myPackage'
。
我使用的步骤是
npm i thePackage --save
typings i -g thePackage --save // assuming it has a typings
如果模块没有打字,你所要做的就是
declare let myPackage:any
为了在TS项目中使用外部包,您需要做些什么吗?或者我错过了重要的一步?
我知道我可以创建一个.d.ts文件,但就目前而言,我希望不用花费所有时间来编写这些文件。
我也一直在阅读有关DefinitelyTyped
和@types/myPackage
的内容,但我对此并不了解......
答案 0 :(得分:0)
在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
与super.onBackPressed();
位于同一目录中。适当调整。
一旦您的模块完全写出,如果您想帮助其他人,您可以将此包的PR发送到DefinitelyTyped。