我有以下定义:
function foo(arg: number[] | number) {
if (Array.isArray(arg)) {
return [1]
}
return 0
}
我希望TypeScript能够自动推断出返回类型。由于类型保护
isArray()
可以知道arg是否为数组,并将返回类型显示为number[]
。然而,使用foo(...)
即使传递一个数组,其返回值仍显示为number[] | 0
。 foo([]).push() // error because push doesnt exist on type 0
这是设计限制、BUG、尚未实现还是其他问题?