以下のようなサンプルのPromise関数があります。成功した場合はnumber
を返し、falseの場合はstring
を返します。コンパイラーは、ある種のジェネリック型をプロミスに指定すると文句を言っています。この場合、どのタイプを指定する必要がありますか? Promise<number>
やPromise<number | string>
のように指定する必要がありますか?
function test(arg: string): Promise {
return new Promise((resolve, reject) => {
if (arg === "a") {
resolve(1);
} else {
reject("1");
}
});
}
Promiseのジェネリック型は、関数の非エラー戻り型に対応する必要があります。エラーは暗黙的にany
型であり、Promiseジェネリック型では指定されていません。
たとえば、次のとおりです。
function test(arg: string): Promise<number> {
return new Promise<number>((resolve, reject) => {
if (arg === "a") {
resolve(1);
} else {
reject("1");
}
});
}