我正在尝试使用typescript设置mapbox-gl。当我尝试根据文档设置投影值时,在VS代码中出现以下错误。基本上:
map = new mapboxgl.Map({
container: 'mapbox',
style: 'mapbox://styles/mapbox/outdoors-v12',
projection: 'naturalEarth'
})
甚至建议的默认值是'mercator',这显然是一个字符串。当运行代码时,一切都正常工作,但是我如何告诉vs代码接受字符串在那里是正确的呢?
npm list的输出是这样的:
mapbox-gl@2.15.0
此外,这也被vs代码所接受:
map.setProjection('globe')
这与其他解决方案一样好,我仍然更喜欢一个答案,为什么我的原始代码被vs代码标记为错误,特别是考虑到它是从文档中逐字复制的,并且在实际运行代码时工作正常。
3条答案
按热度按时间mrzz3bfm1#
我很确定这是因为mapbox-gl的DefinitelyTyped包不是那么“最新”。您正在使用
mapbox-gl@2.15.0
,但在撰写本文时。mapbox-gl并没有发布自己的类型,但是这些类型可以从the DefinitelyTyped project获得,我假设你是从the DefinitelyTyped project获取类型的。每当你从那里抓取类型时,理想情况下,你会抓取类型包,该类型包具有匹配的主版本号和次版本号,用于它为其提供类型的包的版本(请参阅绝对类型的包版本如何与相应库的版本相关?例如,理想情况下,现在你会做npm i -D '@types/mapbox-gl@~2.15'
。不幸的是,在撰写本文时,@types/mapbox-gl
的最新版本是2.7.11。现在,当您查看mapbox-gl的更新日志时,您将看到您正在使用的特性是在v2.9.0中添加的。这就是为什么你没有得到类型。免费向DefinitelyTyped项目提交PR,为mapbox-gl的v2.9添加类型。ijnw1ujt2#
投影的类型应为ProjectionSpecification对象,而不是字符串。
请参考代码片段和this article。
flvlnr443#
我就是这么做的
未知的投影