如何修复OpenLayers 6.6.1中的打字错误 [英] How do I fix Typescript errors in OpenLayers 6.6.1

查看:9
本文介绍了如何修复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个类型参数

泛型类型"Feature"需要%1个类型参数。

我读过的一些帖子,例如...

https://github.com/openlayers/openlayers/issues/8673

似乎表明使用//@ts-Ignore是一种修复方法,但对于泛型上充斥着打字错误的项目来说,这不是一个很好的解决方案。

请告诉我有更好的解决方案...如有任何帮助,我们将不胜感激

推荐答案

我最近将一个大型角度项目升级到OpenLayers 6.6.1,并改用OpenLayers生成的类型脚本声明文件,而不是使用@TYPE/ol声明文件。

Feature和VectorLayer都使用泛型,前者用于几何类型,后者用于源类型。通过在代码中包含如下示例所示的泛型,可以避免"泛型类型""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>>

的原因

我不需要几何类型上的任何类型安全,所以我只使用了超类几何。但是,如果要素和源仅包含点几何要素,则可以使用类似点的内容来替换几何图形。

@Types/ol声明具有泛型的默认值,因此在使用较旧的@Types/ol声明时可以避免此语法。

这篇关于如何修复OpenLayers 6.6.1中的打字错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆