javascript - 类型 [未定义,未定义] | [number, number] 不可分配给类型 [number, number]
问题描述
这都是使用 TypeScript。
我有一个来自外部库的名为“extent”的函数,它返回 [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] 了?
解决方案
if (range == [undefined, undefined])
总是false
。使用==
or===
比较数组检查它们是否是同一个数组,而不是它们是否具有相同的内容。
您需要检查数组元素:
if (range[0] === undefined && range[1] === undefined)
实际上,给定类型,只需检查一个元素就足够了:
if (range[0] === undefined)
在运行时方面,这也可以:
if (range.includes(undefined))
但是由于 TypeScript 无法识别防护,因此您必须使用断言显式标记它,因此使用第一个版本可能更好。
推荐阅读
- react-native - 活动指示器在请求期间冻结
- parallel-processing - 使用 OpenMP 时性能最差
- php - 通过表从数据库中删除记录
- word2vec - gensim:当我加载 Google 预训练的 word2vec 模型时,“Doc2Vec”对象没有属性“intersect_word2vec_format”
- python - 如何使用 Python 合并或使用字符串连接两个熊猫数据框
- amazon-web-services - 在 AWS Route 53 上安装 Go Daddy SSL 证书
- r - 如何在地图上绘制温度差异 (geom_map)
- swagger - 组件/模式之外的可重用组件?
- javascript - 将具有可选/默认属性的对象作为参数的函数?
- javascript - How does "return Promise.resolve()" affect the JavaScript Event loop?