如何使用`geojson`模块和`@types/geojson`类型解析TypeScript中的GeoJSON?

问题描述 投票:0回答:1

我的 TypeScript 应用程序报告

parse
上不存在属性
./path/to/node_modules/@types/geojson/index
。在检查 geojson 类型定义的接口时,这是正确的。

然而,

geojson
模块确实提供了parse方法。

如何访问

parse
方法?

我尝试删除

@types/geojson
模块,这似乎使该方法可以访问。然而,尽管删除了类型定义,但还是抛出了相同的异常,在另一种情况下我无法复制,VS Code 会抛出一个错误,提示建议使用类型定义,没有它就无法编译。

我添加了

// @ts-ignore
装饰器来禁用该错误,但我更喜欢更干净的修复。

typescript types leaflet gis geojson
1个回答
0
投票

不幸的是,您遇到了一种罕见的情况,其中 DefinelyTyped

@types/xxx
包没有描述 npm 上同名的
xxx
包...

此包包含 geojson 的类型定义 (https://geojson.org/)。

// https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/geojson/package.json#L5
{
    "name": "@types/geojson",
    "nonNpm": true,
    "nonNpmDescription": "geojson"
}
    npm 上的
  • geojson
    实际上是一个用于 parse 这样的 GeoJSON 对象的库...

正如该库的自述文件中提到的:

对于 Typescript 环境,您可以使用 GeoJSON.ts,一个 Typescript 原生库。

@EugeneYWang/GeoJSON.ts

...以及

后者的完整解释

创建此存储库的原因

通常,如果还安装了与该包同名的类型定义文件,则现有的 NPM 包只能在 TypeScript 中使用。那么为什么我应该将该库重构为这个打字稿库呢?原因是名为GeoJSON的类型定义已被占用为GeoJSON标准规范的类型定义。因此,没有人可以在 TypeDefinition 中为 @caseycesari/GeoJSON.js 提供类型定义。

© www.soinside.com 2019 - 2024. All rights reserved.