【发布时间】:2021-05-03 13:02:03
【问题描述】:
我在使用 @mapbox/mapbox-sdk 时偶然发现了 typescript 导入中的一个奇怪行为。我已经安装了@mapbox/mapbox-sdk 和@types/mapbox__mapbox-sdk。代码本身有效。严格来说,问题在于打字。
首先我尝试了以下导入:
import { MapiRequest } from '@mapbox/mapbox-sdk/lib/classes/mapi-request';
import Geocoding from '@mapbox/mapbox-sdk/services/geocoding';
import Matrix from '@mapbox/mapbox-sdk/services/matrix';
当我这样做时,我得到这 3 个导入的 3 个类似错误
Could not find a declaration file for module '@mapbox/mapbox-sdk/lib/classes/mapi-request'. '<path>/node_modules/@mapbox/mapbox-sdk/lib/classes/mapi-request.js' implicitly has an 'any' type.
Try `npm install @types/mapbox__mapbox-sdk` if it exists or add a new declaration (.d.ts) file containing `declare module '@mapbox/mapbox-sdk/lib/classes/mapi-request';`ts(7016)
接下来我尝试只导入基础地图框库。
import * as _ from '@mapbox/mapbox-sdk';
import { MapiRequest } from '@mapbox/mapbox-sdk/lib/classes/mapi-request';
import Geocoding from '@mapbox/mapbox-sdk/services/geocoding';
import Matrix from '@mapbox/mapbox-sdk/services/matrix';
显然这不起作用(@mapbox/mapbox-sdk 包中没有顶级模块)但神奇的是 Typescript 突然能够找到 MapiRequest、Geocoding 和 Matrix 的类型,错误就在上面第一行为
File '<path>/node_modules/@types/mapbox__mapbox-sdk/index.d.ts' is not a module.ts(2306)
1- 这里发生了什么? 2- 我该如何解决?
【问题讨论】:
标签: typescript mapbox definitelytyped