[英]How do I fix Typescript errors in OpenLayers 6.6.1
升級到 OpenLayers 6.6.1 后,我收到了數百個由泛型引起的打字稿錯誤。
例如...
import olLayerVector from 'ol/layer/Vector';
import olFeature from 'ol/Feature';
public static highlightOverlay: olLayerVector = new olLayerVector({});
const selectedFeatures: Array<olFeature> =
MapValues.highlightOverlay.getSource().getFeatures();
產生錯誤
通用類型“VectorLayer”需要 1 個類型參數
通用類型“功能”需要 1 個類型參數。
我讀過的一些主題,例如...
https://github.com/openlayers/openlayers/issues/8673
似乎表明使用 // @ts-ignore 是一個修復,但這不是一個很好的解決方案,讓你的項目充斥着泛型的打字稿錯誤。
請告訴我有更好的解決方案......非常感謝任何幫助
我最近將一個大型 angular 項目升級到 OpenLayers 6.6.1 並切換到使用 OpenLayers 生成的 typescript 聲明文件,而不是使用 @types/ol 聲明文件。
Feature 和 VectorLayer 都使用泛型,前者用於 Geometry 類型,后者用於源類型。 可以通過在代碼中包含泛型來避免“泛型類型 'Foo' 需要 1 個類型參數”錯誤,如下例所示:
import { Feature } from 'ol';
import { Geometry } from 'ol/geom';
import { Vector } from 'ol/layer';
import { Vector as VectorSource } from 'ol/source';
// Typescript complains:
let f1: Feature = new Feature();
let vl1: Vector = new Vector({});
// Typescript is fine
let f2: Feature<Geometry> = new Feature<Geometry>();
let vl2: Vector<VectorSource<Geometry>> = new Vector<VectorSource<Geometry>>({});
VectorSource 還為其幾何類型使用了泛型,這就是為什么代碼需要Vector<VectorSource<Geometry>>
我不需要 Geometry 類型的任何類型安全,所以我只使用了超類 Geometry。 但是,如果 Feature 和 source 僅包含 Point 幾何特征,則可以將 Geometry 替換為 Point 之類的東西。
@types/ol 聲明具有泛型的默認值,因此在使用舊的 @types/ol 聲明時可以避免這種語法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.