首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Type [undefined,undefined] | [number,number]不能赋值给type [number,number]

Type [undefined,undefined] | [number,number]不能赋值给type [number,number]
EN

Stack Overflow用户
提问于 2020-10-11 15:25:57
回答 2查看 37关注 0票数 0

这都是使用TypeScript实现的。

我有一个来自外部库的名为'extent‘的函数,它返回number、number或未定义的、未定义的,因此我不能更改此函数本身。

我有一个名为'getMaxRange‘的函数,它接受一个数字数组,并返回一个长度为2的数组,每个数组都包含一个数字,如下所示: number,number

如果我输入类似这样的内容

代码语言:javascript
复制
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]

什么是最好的方法,使我不会得到这个错误?我怎样才能让它知道范围不能再是未定义的,未定义的了?

EN

回答 2

Stack Overflow用户

发布于 2020-10-11 15:34:24

if (range == [undefined, undefined])始终为false。使用=====来比较数组,检查它们是否是相同的数组,而不是它们是否具有相同的内容。

您需要检查数组元素:

代码语言:javascript
复制
if (range[0] === undefined && range[1] === undefined)

Playground link

实际上,给定类型,只检查一个元素就足够了:

代码语言:javascript
复制
if (range[0] === undefined)

Playground link

从运行时的角度来看,这也是可行的:

代码语言:javascript
复制
if (range.includes(undefined))

但由于TypeScript无法识别该保护,因此您必须使用断言显式地标记它,因此最好使用第一个版本。

票数 1
EN

Stack Overflow用户

发布于 2020-10-11 15:34:33

您可以检查数组元素

代码语言:javascript
复制
getMaxRange = (points: number[]) : [number, number] => {
    const range = extent(points));
    if (range[0] === undefined || range[1] === undefined) {
        return [0,1];
    }
    else{
        return range;
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64301589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档