怎么理解下面 ts 代码的类型推导?

type C89<T> = keyof T extends keyof string ? {
  [p in keyof T]: 2
} : 1

let c899: C89<string>

type C90<T> = keyof T extends any ? {
  [p in keyof T]: 2
} : 1

let c900: C90<string>

let c981: Equal<C89<string>, C90<string>> // false
let c982: Equal<string, C90<string>> // true

c89 的行为可以理解,但是对于 C90 好像直接赋值了 string 类型,这个应该怎么去理解

阅读 631
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题