【发布时间】:2019-08-20 12:20:28
【问题描述】:
我有一个包,它简单地执行 HTTP 调用并返回成功响应或错误响应。我正在努力做到这一点,以便您在成功和错误时都能获得 IntelliSense。
这就是我所拥有的:
class ResultSuccess {
userId: number;
id: number;
title: string;
}
class ResultError {
error: boolean;
}
export function magic(): Promise<ResultSuccess> {
return new Promise((resolve, reject) => {
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(response => response.json())
.then(json => resolve(plainToClass(ResultSuccess, json as ResultSuccess)))
.catch(err => {
reject(plainToClass(ResultError, { error: true } as ResultError));
});
});
}
这行得通,我对结果有了智能感知,但如果我将返回的主题设置为类似:
function magic(): Promise<ResultSuccess | ResultError>
我不再对成功或失败的结果进行智能感知。
我是打字稿的新手,有人可以建议一种方法来处理这个问题吗?或者有人可以看到问题吗?
【问题讨论】:
-
I no longer get intelisense on the success or fail outcomes.怎么样?顺便说一句拒绝无法输入:github.com/Microsoft/TypeScript/issues/… -
我得到函数将返回 ResultSuccess 的提示 | ResultError 但我没有自动完成属性名称(outcome.userIs 或 output.error)。那么这是处理https调用的正确方法吗? (输入成功的结果,如果不成功,让他们找出错误?)。
标签: javascript node.js typescript typescript-generics