TypeScript:阻止加载不导出的@types定义(TS2306不是模块)

时间:2017-06-21 07:06:05

标签: node.js typescript

我试图加载一个NodeJS库已经沉没了几个小时,这个库在@types存储库中有一个(在我认为有缺陷的)类型定义。

我说的是geolib及其@types/geolib

是的,我知道,该库在master上有类型,但它还没有标记版本,我想在将来的情况下解决这个问题。

安装geolib(当时为2.0.22)

  • npm install geolib --save
  • import * as geolib from 'geolib';
一切都很棒!但你喜欢的编辑器中没有类型分辨率

安装@types/geolib

  • npm install @types/geolib --save-dev

这是它破裂的地方:

node_modules/@types/geolib/index.d.ts' is not a module. (2306)

这是因为类型文件不是export = geolib,但是尝试将此文件作为模块加载。

我的目标是简单地加载节点库并使用@types/geolib作为类型提示进行开发。

我尝试了多种选择,例如使用新的types指令,通过在tsconfig中设置types: []来阻止自动加载,只使用import 'geolib'导入,但似乎没有解决定义在@types的问题并尝试作为一个模块。

修改

  • typescript@2.3.4
  • geolib@2.0.22
  • @types/geolib@2.0.2

1 个答案:

答案 0 :(得分:0)

有同样的问题。

对我有用的是:

import * as GeoLib from 'geolib';

以及后来的例子:

import * as GeoLib from 'geolib';
import PositionAsDecimal = GeoLib.PositionAsDecimal;

distance += GeoLib.getDistance(pointAPositionAsDecimal, pointBPositionAsDecimal, accuracyInMeters, precision);