web-dev-qa-db-fra.com

Type générique de promesse dactylographiée

J'ai un exemple de fonction Promise comme ci-dessous. En cas de succès, je retourne un number et en cas de false, je retourne string. Le compilateur se plaint de spécifier un type de type générique à la promesse. Dans ce cas, quel type dois-je spécifier? Est-ce que je dois spécifier comme Promise<number> ou Promise<number | string>?

function test(arg: string): Promise {
    return new Promise((resolve, reject) => {
        if (arg === "a") {
            resolve(1);
        } else {
            reject("1");
        }
    });
}
25
VJAI

Le type générique de la promesse doit correspondre au type de retour sans erreur de la fonction. L'erreur est implicitement de type any et n'est pas spécifiée dans le type générique Promise.

Donc par exemple:

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