为什么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>
,而不是Promise,甚至是包装Result
类。那么为什么我很高兴让我犯这个错误呢? (有没有办法让它抱怨?)
提前致谢
答案 0 :(得分:3)
返回值categories是Array类型,而不是Promise,
所有async
个函数都返回Promise
。这是JavaScript规范的一部分。如果你返回一个常量,它基本上是Promise.resolve
。
答案 1 :(得分:0)
当您的函数声明Promise<Result<Array<ProductCategory>>>
返回类型时,您可以返回Result<Array<ProductCategory>>
类型的值。
如果我有以下声明:
interface Result<T> {
result: T;
}
我从TypeScript编译器收到错误:
Property 'result' is missing in type 'ProductCategory[]'.
您对Result
的定义是什么?