2017-05-14 44 views
0

爲什麼TypeScript沒有抱怨?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

返回值,類別,類型是數組,而不是一個無極,

所有async功能返回一個Promise。這是JavaScript規範的一部分。如果你返回一個常量,它基本上是Promise.resolve ed。

+0

啊,謝謝先生 –

0

當你的函數聲明Promise<Result<Array<ProductCategory>>>返回類型時,你可以返回Result<Array<ProductCategory>>類型的值。

如果我有以下聲明:

interface Result<T> { 
    result: T; 
} 

我收到錯誤的打字稿編譯:

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

什麼是你的Result定義是什麼?