gpt4 book ai didi

typescript - 函数应返回非空参数的类型

转载 作者:行者123 更新时间:2023-12-04 08:03:54 24 4
gpt4 key购买 nike

我有一个接受 x 的函数和 y .坐标之一始终是 null .另一个总是number .该函数返回非空坐标的值:xy .该函数总是返回一个数字。

function test({ x, y }: { x: null; y: number } | { x: number; y: null }): number {
if (x === null) {
// y should be recognized as 'number', but it is 'number | null'
return y; // ERROR
}
return x;
}


test({x: null, y: 42 }); // 42
TypeScript Playground
是否可以将此函数的返回类型始终保持为 number ?

最佳答案

目前,TypeScript 推断 number | null两者都适用 xy因为它不会考虑从联合类型而来的它们之间的任何依赖关系。您可以通过不解构参数对象来稍微简化问题,这将允许 TypeScript 将其识别为 discriminating union并根据对 x 的检查缩小其类型(或 y):

function test(arg: { x: null; y: number } | { x: number; y: null }): number {
if (arg.x === null) {
return arg.y;
}
return arg.x;
}
TypeScript playground

关于typescript - 函数应返回非空参数的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66318402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com