typescript函数在接口中返回不同类型的结果

时间:2020-03-11 07:05:13

标签: javascript typescript

myFuncResult interface {
  abc: string
}

function myFunc():myFuncResult {
 if(something) return { abc:'abc' } //ok here

 return 'result' //but this line gave me warning
}

我基于条件有两种结果类型(对象和字符串),如何在我的界面中声明呢?

2 个答案:

答案 0 :(得分:2)

由于您要返回两个不同的类型/接口(可以是myFuncResult或字符串),为什么不使用管道运算符创建并集类型?

function myFunc(): myFuncResult | string {
    if (something)
        return { abc:'abc' };

    return 'result';
}

或者,您可以直接这样创建联合类型:

type myFuncResult = { abc: string } | string;

function myFunc(): myFuncResult {
    if (something)
        return { abc:'abc' };

    return 'result';
}

答案 1 :(得分:0)

发生这种情况是因为myFuncResult不等于接口类型myFuncResult。您可以使用变量abc返回类型myFunc(): myFuncResult { if (something) return { abc:'abc' } //ok here return {abc: 'result'} //but this line gave me warning }

null

更新:

此外,如果符合条件,您可以返回myFunc():myFuncResult { if (something) return { abc:'abc' } //ok here return null; }

'x-ms-documentdb-partitionkey' = '[' + ($partitonKey) + ']'

A work example can be seen here