我的 TypeScript 应用程序报告
parse
上不存在属性 ./path/to/node_modules/@types/geojson/index
。在检查 geojson 类型定义的接口时,这是正确的。
然而,
geojson
模块确实提供了parse方法。
如何访问
parse
方法?
我尝试删除
@types/geojson
模块,这似乎使该方法可以访问。然而,尽管删除了类型定义,但还是抛出了相同的异常或,在另一种情况下我无法复制,VS Code 会抛出一个错误,提示建议使用类型定义,没有它就无法编译。
我添加了
// @ts-ignore
装饰器来禁用该错误,但我更喜欢更干净的修复。
不幸的是,您遇到了一种罕见的情况,其中 DefinelyTyped
@types/xxx
包没有描述 npm 上同名的 xxx
包...
@types/geojson
定义描述了GeoJSON标准此包包含 geojson 的类型定义 (https://geojson.org/)。
// https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/geojson/package.json#L5
{
"name": "@types/geojson",
"nonNpm": true,
"nonNpmDescription": "geojson"
}
geojson
实际上是一个用于 parse 这样的 GeoJSON 对象的库...正如该库的自述文件中提到的:
对于 Typescript 环境,您可以使用 GeoJSON.ts,一个 Typescript 原生库。...以及
后者的完整解释:
创建此存储库的原因
通常,如果还安装了与该包同名的类型定义文件,则现有的 NPM 包只能在 TypeScript 中使用。那么为什么我应该将该库重构为这个打字稿库呢?原因是名为GeoJSON的类型定义已被占用为GeoJSON标准规范的类型定义。因此,没有人可以在 TypeDefinition 中为 @caseycesari/GeoJSON.js 提供类型定义。