Для устранения этой ошибки необходимо установить определения типа для mapbox-gl-leaflet
, например:
npm install --save @types/mapbox-gl-leaflet
И, наконец, не менее важно, react-leaflet
определения типа не полностью совместимы с react-leaflet v2
на данный момент, и требуется дополнительная настройка.Поскольку текущая версия из @types/react-leaflet
нацелена на react-leaflet v1
, некоторые определения типов из версии 2 отсутствуют (для получения более подробной информации см. эту ветку ),например withLeaflet
HOC.Хорошей новостью является PR , в котором добавлена поддержка версии 2, которая уже была отправлена (но еще не утверждена)
В любом случае отсутствующий тип определения withLeaflet
может бытьобъявлено так:
declare module "react-leaflet" {
const withLeaflet: <T>(component: T) => T;
}
и, наконец, компонент может быть реализован так:
import * as L from "leaflet";
import "mapbox-gl-leaflet";
declare module "react-leaflet" {
const withLeaflet: <T>(component: T) => T;
}
import {Children, MapLayer, withLeaflet} from "react-leaflet";
export interface IMapboxGLProps extends L.MapboxGLOptions {
children?: Children;
}
class MapBoxGLLayer extends MapLayer<IMapboxGLProps,{}> {
public static defaultProps = {
style: "mapbox://styles/mapbox/streets-v9"
};
public createLeafletElement(props:IMapboxGLProps) {
return L.mapboxGL(props);
}
public render() {
return null
}
}
export default withLeaflet(MapBoxGLLayer);
Вот демоверсия