TypeScript在不匹配的返回值上没有错误

TypeScript在不匹配的返回值上没有错误,typescript,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

为什么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
}
异步GetCategoriesBySet(set:set):承诺{ 让类别:数组=[] 如果(!set.theme | | |!set.subtheme | |!set.title){ 返回Promise.resolve(新结果({res:null,err:“集合数据无效”})) } categories.push(等待this.GetCategory(set.theme,{parent:(等待this.GetCategory('Themes')).id})) 退货类别 } 返回值
categories
,属于
Array
类型,不是承诺,甚至不是包装
结果
类。那么,为什么让我犯这个错误会让人高兴呢?(有没有办法让它抱怨?)

提前谢谢

返回值categories的类型为Array,而不是Promise

所有
async
函数都返回一个
Promise
。这是JavaScript规范的一部分。如果您返回一个常量,它本质上就是
Promise.resolve
ed

返回值categories的类型为Array,而不是Promise


所有
async
函数都返回一个
Promise
。这是JavaScript规范的一部分。如果您返回一个常量,它本质上就是
Promise.resolve
ed.

当您的函数声明
Promise
返回类型时,您可以返回
Result
类型的值

如果我有以下声明:

interface Result<T> {
    result: T;
}
接口结果{
结果:T;
}
我从TypeScript编译器收到错误:

类型“ProductCategory[]”中缺少属性“result”。


您对
Result
的定义是什么?

当您的函数声明
Promise
返回类型时,您可以返回
Result
类型的值

如果我有以下声明:

interface Result<T> {
    result: T;
}
接口结果{
结果:T;
}
我从TypeScript编译器收到错误:

类型“ProductCategory[]”中缺少属性“result”。

您对
结果的定义是什么