如何处理可能是几种类型之一的变量

时间:2017-12-06 23:32:56

标签: typescript union-types

我有这样的功能

sqlQuery(query : string | Array, database = 'swdata') : Promise {
    let rest;
    if (Array.isArray(query)) {
        rest = query.splice(1);
        query = sqlString.format(query[0], rest);
    }

    const request = new Request('data', 'sqlQuery', {database, query, formatValues: true});
    return this.connection.sendRequest(request);

}

我的IDE抱怨字符串没有方法拼接。这只是我的IDE的一个怪癖,还是有更好的方法来编写这段代码?

1 个答案:

答案 0 :(得分:2)

您的IDE不能正确支持TypeScript语言服务。

Array.isArray()是一个Type Guard函数,它参与TypeScript的控制流分析。这意味着在该块中,TypeScript语言服务可以确定query的类型是数组类型,您不应该看到错误。

例如,如果您的IDE是WebStorm,则需要使用TypeScript语言服务进行设置和检查。 其他IDE可能有类似的选项或插件。

您可以使用VSCode对其进行测试。它应该工作得很好。

相关问题