提取到函数时,Typescript类型保护不起作用

时间:2018-04-21 20:06:50

标签: typescript

当我直接使用本机代码时,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关键字的情况下执行此操作吗?

1 个答案:

答案 0 :(得分:2)

Typeguards有一个特殊的返回类型。您还需要将它添加到您的函数中。

function isArray(value): value is Array<any> {
    return Array.isArray(value);
}