Does a async function which returns Promise<void> have an implicit return at the end of a block?
public async demo(): Promise<void> {
// Do some stuff here
// Doing more stuff
// ...
// End of block without return;
}
Is a new Promise<void>
returned implicitely at the end of the block in TypeScript/ES6?
Example for boolean type:
class Test {
public async test(): Promise<boolean> {
return true;
}
public main(): void {
this.test().then((data: boolean) => {
console.log(data);
});
}
}
new Test().main();
This prints true
to the console because a return
inside of a async function creates a new Promise
and calls resolve()
on it with the returned data. What happens with a Promise<void>
?
What happens with a Promise
Same thing with a function that returns void
. A void
function returns undefined
. A Promise<void>
resolves to an undefined
.
function foo(){}; console.log(foo()); // undefined
async function bar(){}; bar().then(res => console.log(res)); // undefined