React TS项目Leaflet中useRef调用getLatLng报TS2339怎么解决
报错原因
TypeScript 无法自动推导 markerRef 的实例类型,你初始化时赋值为 null,TS 默认将 markerRef.current 的类型推导为 never,自然识别不到 Leaflet Marker 实例的 getLatLng 方法。
解决步骤
- 第一步:从 leaflet 包导入 Marker 类型
import type { Marker } from 'leaflet'
- 第二步:给
useRef显式指定泛型类型
将原代码中的 ref 声明:
const markerRef = React.useRef(null);
修改为:
const markerRef = React.useRef<Marker | null>(null);
修改后 TypeScript 就会识别 markerRef.current 要么是 null,要么是 Leaflet 的 Marker 实例,调用 getLatLng 方法就不会触发类型报错了。
内容的提问来源于stack exchange,提问作者Sopon Kongnithigarn
相关产品推荐
相关产品推荐

