web-dev-qa-db-ja.com

Typescript Promiseジェネリック型

以下のようなサンプルの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");
        }
    });
}
25
VJAI

Promiseのジェネリック型は、関数の非エラー戻り型に対応する必要があります。エラーは暗黙的にany型であり、Promiseジェネリック型では指定されていません。

たとえば、次のとおりです。

function test(arg: string): Promise<number> {
    return new Promise<number>((resolve, reject) => {
        if (arg === "a") {
            resolve(1);
        } else {
            reject("1");
        }
    });
}
64
Dave Templin