这都是使用TypeScript。
我从外部库中获得了一个名为“范围”的函数,该函数返回[number,number]或[undefined,undefined],所以我无法更改此函数本身。
我有一个名为“ 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]
。
什么是最好的方法,这样我就不会收到此错误?我如何得知范围不再[undefined,undefined]?
答案 0 :(得分:1)
if (range == [undefined, undefined])
始终为false
。使用==
或===
比较数组会检查它们是否是相同数组,而不是内容是否相同。
您需要检查数组元素:
if (range[0] === undefined && range[1] === undefined)
实际上,给定类型,只需检查一个元素就足够了:
if (range[0] === undefined)
在运行时方面,这也将起作用:
if (range.includes(undefined))
但是TypeScript无法识别防护,因此您必须使用断言明确标记它,因此最好使用第一个版本。
答案 1 :(得分:0)
您可以检查数组元素
getMaxRange = (points: number[]) : [number, number] => {
const range = extent(points));
if (range[0] === undefined || range[1] === undefined) {
return [0,1];
}
else{
return range;
}
}