我有一个返回类型为this._response
的对象(IResponse
)的方法。我想返回类型为this._response.details
的{{1}}。
IDetails
[ts]'IResponse'类型中不存在属性'详细信息'。
如何根据if条件从方法中返回不同的类型?
答案 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)