我花了好几个小时尝试加载一个 NodeJS 库,它在 @types 存储库中有一个(在我看来是错误的)类型定义。
我说的是geolib及其 @types/geolib
是的,我知道,该库在 master 上有类型,但还没有针对它的标记版本,我想在未来的情况下解决这个问题。
安装geolib
(当时是2.0.22)
npm install geolib --save
从“geolib”导入 * 作为 geolib;
一切都很棒!但在您最喜欢的编辑器中没有类型解析
安装@types/geolib
npm install @types/geolib --save-dev
这里是中断的地方:
node_modules/@types/geolib/index.d.ts' 不是模块。 (2306)
这是因为类型文件没有 export = geolib
但它试图将此文件作为模块加载。
我的目标是简单地加载 Node 库,并使用 @types/geolib
作为开发的类型提示。
我尝试了多种选择,例如使用新的 types
指令,通过在 tsconfig 中设置 types: []
来防止自动加载,仅使用 import 'geolib'
导入,但没有似乎解决了定义位于 @types
中并作为模块尝试的问题。
编辑
typescript@2.3.4
geolib@2.0.22
@types/geolib@2.0.2
最佳答案
遇到了同样的问题。
对我有用的是:
import * as GeoLib from 'geolib';
和后来的例子:
import * as GeoLib from 'geolib';
import PositionAsDecimal = GeoLib.PositionAsDecimal;
distance += GeoLib.getDistance(pointAPositionAsDecimal, pointBPositionAsDecimal, accuracyInMeters, precision);
关于node.js - TypeScript:防止加载不导出的@types 定义(TS2306 不是模块),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44669006/