Type 'void' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value.
自分がまだまだTypeScriptを書き慣れていないのと、意外とググってみてもサクッと答えにたどり着かなかったので(自分の調べ方が悪い可能性は大いにあり)、一応備忘録としてこのエラーの内容と対応法を書き残しておく。
(もしかしたら書き残しておくほどのことでもないので、わざわざ書いていないのかもしれないが...😱)
ちなみに、上のエラーメッセージのvoid
のところには返そうと思っている型などが入るので、人によっては微妙に異なるメッセージになると思う。
下記のような関数を書いていて、タイトルにあるエラーメッセージが出た
async function sayHello(): void { console.log('Hello!'); }
エラーメッセージの内容を見ればすぐに分かるのだが、async function
なのに返り値がPromise
じゃないよというわけである。
ではPromise
が返り値の場合はどう書けばよいのかというと、Promise<型>
という感じになる
async function sayHello(): Promise<void> { console.log('Hello!'); }
もし文字列を返り値として返したい場合は下記のようになる。
async function sayHello(): Promise<string> { return 'Hello!'; }
他にObjectとして返したい場合は下記のようになる
interface userObj { name: string, age: number } async function getUser(): Promise<userObj> { return { name: 'John', age: 20 } }