React+TypeScript中使用Leaflet时访问Feature类型的问题
问题解答
为什么L.Layer无需额外导入?
Leaflet的核心API类型(像Layer、Map这类)是直接挂载在全局L命名空间下的,@types/leaflet类型定义包已经把这些核心类型整合到L里,所以你不用手动导入,直接就能用。
为什么GeoJSON相关类型需要单独导入?
Leaflet里的GeoJSON功能依赖标准GeoJSON规范的类型定义,而@types/leaflet并没有把这些标准GeoJSON类型(比如Feature、Geometry)挂载到L命名空间下,而是引用了独立的@types/geojson类型包。这个包专门提供标准GeoJSON的TypeScript类型,不属于Leaflet核心类型范畴,所以必须手动导入才能使用。
你的操作有没有问题?
完全没问题。@types/geojson本身就是纯类型定义包,只有类型声明没有实际JS代码,所以它只会出现在@types目录下,不会在主node_modules里有对应源码包。直接导入geojson模块并使用geojson.Feature<geojson.Geometry, any>是符合TypeScript类型规范的正确做法。
额外补充:Leaflet的GeoJSON类本身是L.GeoJSON(注意大小写),但你需要的Feature是标准GeoJSON数据结构的类型,不属于Leaflet自定义类型,所以还是得用@types/geojson里的定义。
内容的提问来源于stack exchange,提问作者tobi
相关产品推荐
相关产品推荐

