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 类型,这个应该怎么去理解