【发布时间】:2021-11-18 17:05:17
【问题描述】:
我想知道为什么使用T1,我无法获得与{ a: string, b: number, c: boolean } 相同的类型? -? 没有泛型就无法工作。它只适用于泛型。
type Item = { a: string, b: number | undefined, c: boolean };
type T1 = { [P in keyof Item]-?: Item[P] }; // { a: string, b: number | undefined, c: boolean }
type T2<U> = { [P in keyof U]-?: U[P] }; // { a: string, b: number, c: boolean }
const t2: T2<Item> = {
a: 'abc',
b: 123,
c: false
}
【问题讨论】:
-
我认为你的假设是错误的。
T2<Item>仍然有b和| undefined(在映射类型之前添加{} &使类型更清晰)typescriptlang.org/play?#code/… -
另外值得注意的是
b: number | undefined与b?: number不同。 -
@RobbyCornelissen,我认为你找到了完全错误的部分!
标签: typescript typescript-generics