gpt4 book ai didi

typescript - 如何解决 topojson 包的 typescript 错误?

转载 作者:行者123 更新时间:2023-12-05 09:11:14 26 4
gpt4 key购买 nike

请原谅这个幼稚的问题;我是 typescript 的新手。在 javascript 中,我可以使用 topojson.mesh像这样创建一个网格对象:

import us from "./counties-albers-10m.json"
topojson.mesh(us, us.objects.states, (a, b) => a !== b))

当我尝试在 Typescript 中执行此操作时,我收到此警告:

Types of property 'type' are incompatible. Type 'string' is not assignable to type "Topology" TS2345

我也安装了 @types/topojson。谁能帮我调试这个?我对 typescript 的了解不够,无法理解问题所在。

更广泛地说,如何调试这样的错误?我发现 3rd 方包存在各种类型问题,并且在很多情况下不知道如何为我的 javascript 对象分配正确的类型。感谢您的帮助。

最佳答案

一旦我安装了@types/topojson,我就可以像这样从topojson-specification导入所需的类型:

import * as topojson from 'topojson-client';
import { GeometryObject, Topology } from 'topojson-specification';
import us from '../counties-albers-10m.json';

topojson.mesh(
(us as unknown) as Topology,
us.objects.states as GeometryObject,
(a: GeometryObject, b: GeometryObject) => a !== b
);

More broadly, how does one debug errors like this?

为了调试这种东西,我使用我的 IDE (VS Code) 检查方法,比如 .mesh 方法并查看它期望的类型。我还使用了 Go To Definition 功能(在 Mac 上按 ⌘ + 单击)来查看类型定义: enter image description here

转到类型定义文件还向我展示了他们从何处导入类型。

虽然有一部分我想不通。当您在 TypeScript 中导入 JSON 时,它会自动推断类型,但这些自动类型似乎与 @types/topojson 冲突,原因有很多(例如 number[] !== [编号,编号])。这就是为什么我需要先转换为 unknown,然后再转换为正确的类型。这可能不是最佳解决方案,但我不知道有什么方法可以描述 JSON 文件的类型。

关于typescript - 如何解决 topojson 包的 typescript 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60367284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com