TypeScript:导入没有类型定义的ES2015模块

时间:2016-06-07 20:20:59

标签: javascript typescript ecmascript-6

我有一个正在运行的ES2015项目,我想迁移到TypeScript。

在我的解决方案中,我使用ES2015导入来导入第三层模块(通过npm安装),如下所示:

import {ClassXY} from 'moduleXY'

在我的项目中设置TypeScript后,TypeScript编译器报告以下错误:

error TS2307: Cannot find module 'moduleXY'

如何在TypeScript中使用上述ES2015导入语句?

我正在寻找一个解决方案,而不是通过.d.ts安装相应的typings声明...让我们假设模块moduleXY是一个不分发它的库自己的.d.ts声明,并且在DefinitelyTyped上没有可用的声明(或声明已过时)。

我必须为模块moduleXY的类型定义创建存根吗?我怎么用最小的努力才能做到这一点?

1 个答案:

答案 0 :(得分:2)

如果没有模块的打字,那么你可以 require它像常规的commonjs模块

declare require:any;

const moduleXY:{
    classXY:any
} = require("moduleXY");

在.ts文件中,并确保该文件包含在Typescript编译器中。您不需要完全声明该模块,您仍然可以在开始添加类型的地方受益。