Jef*_*hen 6 undefined promise typescript visual-studio-code
我有一个基本上像这样的功能
function foo(): Promise<MyClass | undefined> {
if(somethingGoesWrong) {
return Promise.resolve(undefined);
}
return Promise.resolve(new MyClass());
}
Run Code Online (Sandbox Code Playgroud)
在函数之外,我称之为
const x = await foo()
Run Code Online (Sandbox Code Playgroud)
问题是我的 VSCode IDE 不会将 x 视为MyClass | undefined. 就这样吧MyClass。
我不知道这是一个IDE问题还是有诸如“Promise无法解析未定义”之类的规则。
我知道更好的方法可能是抛出一些错误而不是返回未定义,我只是想知道为什么这不起作用或似乎不起作用。
您可以声明您的函数将返回void而不是undefined.
function foo(p: string): Promise<string | void> {
if(p.length === 0) {
return Promise.resolve(undefined);
}
return Promise.resolve(t);
}
Run Code Online (Sandbox Code Playgroud)
现在,如果你调用你的函数,VSCode 将遵守你的函数不能返回任何内容。Vscode 将以红色 .length 下划线。
foo("").then((t) => {
t.length;
});
Run Code Online (Sandbox Code Playgroud)
您可以将相同的事情应用于同步功能。
我选择使用字符串而不是类来简化示例。
| 归档时间: |
|
| 查看次数: |
4054 次 |
| 最近记录: |