当我直接使用本机代码时,typescript知道块内的正确类型,例如:
function test(value: string | string[]) {
if (Array.isArray(value)) {
// ts knows that value is array
return value;
}
return value;
}
但是当我试图将逻辑抽象为函数时,它就不再起作用了。
function isArray(value) {
return Array.isArray(value);
}
function test(value: string | string[]) {
if (isArray(value)) {
return value;
}
return value;
}
有一种方法可以在不明确写出as
关键字的情况下执行此操作吗?
答案 0 :(得分:2)
Typeguards有一个特殊的返回类型。您还需要将它添加到您的函数中。
function isArray(value): value is Array<any> {
return Array.isArray(value);
}