2017-05-14 20 views
0

なぜこれについてタイプスクリプトが不平を言っていませんか?TypeScriptに一致しない戻り値のエラーがありません

async GetCategoriesBySet(set: Set): Promise<Result<Array<ProductCategory>>> { 
    let categories: Array<ProductCategory> = [] 

    if (!set.theme || !set.subtheme || !set.title) { 
    return Promise.resolve(new Result<Array<ProductCategory>>({res: null, err: "Set data is not valid"})) 
    } 

categories.push(await this.GetCategory(set.theme, {parent: (await this.GetCategory('Themes')).id})) 

    return categories 
} 

戻り値、categoriesは、タイプArray<ProductCategory>、ない約束、あるいはラップResultクラスのものです。それで私がこのミスをさせてもらうのはなぜ幸いですか? (そして、それは文句を取得する方法はありますか?)事前に

おかげ

答えて

3

戻り値、カテゴリは、Array型ではなく、約束の

すべてasync機能です返品はPromiseです。これはJavaScript仕様の一部です。定数を返すと本質的にはPromise.resolveとなります。

+0

ああ、ありがとうございます –

0

関数がPromise<Result<Array<ProductCategory>>>戻り値型を宣言すると、Result<Array<ProductCategory>>の値を返すことができます。私は宣言している場合は、以下の

interface Result<T> { 
    result: T; 
} 

私は活字体コンパイラからエラーが表示されます。

Property 'result' is missing in type 'ProductCategory[]'.

Resultのあなたの定義は何ですか?

関連する問題