Bri*_*ong 5 javascript async-await typescript es6-promise ecmascript-2017
由于 TypeScript 是 Javascript 的超集,并且“Type”会在生成的 js 文件中被删除,所以我想使用“type”不会像这样工作,对吧?另外,除了两种不同的方法之外,还有什么更好的方法吗?
type VoidToVoidFunc = () => void;
type VoidToPromiseVoidFunc = () => Promise<void>;
async function add(func: VoidToVoidFunc | VoidToPromiseVoidFunc) {
if (typeof func == typeof VoidToVoidFunc)
func();
else
await func();
}
add(() => console.log(1));
Run Code Online (Sandbox Code Playgroud)
正如您在这里所看到的,当后面跟随一个不可thenable的值时await,就会构造并使用一个已经实现的值Promise。
所以最简单的实现就是await函数调用的结果。事实上,如果await值Promise还不是 a ,则将其包装在 a 中Promise:
type VoidToVoidFunc = () => void;
type VoidToPromiseVoidFunc = () => Promise<void>;
async function add(func: VoidToVoidFunc | VoidToPromiseVoidFunc) {
await func();
// Do something else
}
add(() => console.log(1));
Run Code Online (Sandbox Code Playgroud)
此行为由 TypeScript 正确键入,实际上,当您编写const test = await func();并悬停变量时,其类型会被正确推断为void.
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |