繁体   English   中英

是否有正确的方法在TypeScript项目中使用JavaScript模块?

[英]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/*"]
        }
    }
}

现在,在@typesnode_modules@types之前,应首先在externals查找任何模块。

注意:这假定externalstsconfig.json位于同一目录中。 适当调整。

一旦您的模块完全写出,如果您想帮助其他人,您可以将此包的PR发送到DefinitelyTyped。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM