如何从我的方法中返回不同的类型?

时间:2017-01-16 20:01:04

标签: oop typescript

我有一个返回类型为this._response的对象(IResponse)的方法。我想返回类型为this._response.details的{​​{1}}。

IDetails
  

[ts]'IResponse'类型中不存在属性'详细信息'。

如何根据if条件从方法中返回不同的类型?

2 个答案:

答案 0 :(得分:2)

您可以使用union types

get response(): IDetails  | IResponse {
    ...
}

修改

返回联合的问题是每次调用函数时都需要检查结果的类型。

所以:

function isResponse(obj: IDetails  | IResponse) obj is IResponse {
    return obj && obj.response;
}

let value = myObj.response;
if (isResponse(value)) {
    // value is IResponse
} else {
    // value is IDetails
}

答案 1 :(得分:0)

另一个选择是不指定任何东西;返回类型是自动推断的:

enter image description here

这里的危险是这允许你返回任何内容,因此在开发期间没有明确的防范,以防止错误的返回类型。