这都是使用TypeScript实现的。
我有一个来自外部库的名为'extent‘的函数,它返回number、number或未定义的、未定义的,因此我不能更改此函数本身。
我有一个名为'getMaxRange‘的函数,它接受一个数字数组,并返回一个长度为2的数组,每个数组都包含一个数字,如下所示: number,number
如果我输入类似这样的内容
getMaxRange = (points: number[]) : [number, number] => {
const range = extent(points));
if (range == [undefined, undefined]) {
return [0,1];
}
else{
return range;
}
}它会给出一个错误,即Type [undefined, undefined] | [number, number] is not assignable to type [number, number]。
什么是最好的方法,使我不会得到这个错误?我怎样才能让它知道范围不能再是未定义的,未定义的了?
发布于 2020-10-11 15:34:24
if (range == [undefined, undefined])始终为false。使用==或===来比较数组,检查它们是否是相同的数组,而不是它们是否具有相同的内容。
您需要检查数组元素:
if (range[0] === undefined && range[1] === undefined)实际上,给定类型,只检查一个元素就足够了:
if (range[0] === undefined)从运行时的角度来看,这也是可行的:
if (range.includes(undefined))但由于TypeScript无法识别该保护,因此您必须使用断言显式地标记它,因此最好使用第一个版本。
发布于 2020-10-11 15:34:33
您可以检查数组元素
getMaxRange = (points: number[]) : [number, number] => {
const range = extent(points));
if (range[0] === undefined || range[1] === undefined) {
return [0,1];
}
else{
return range;
}
}https://stackoverflow.com/questions/64301589
复制相似问题