T.J*_*der 5
我经常为extends
too 的重复使用而烦恼,但在某种程度上确实如此。类型是"a" | "b" | "c"
,但您可以使用其他可分配给它的东西,例如"a" | "b"
:
type ObjectWithKeys<T, K extends keyof T> = {
[P in K]: T[P];
};
type A = {
a: number;
b: number;
c: number;
}
type X = ObjectWithKeys<A, "a" | "b">; // Works
游乐场链接
从这个意义上说,您可以将"a" | "b"
其视为 的子类型(更专业的版本)"a" | "b" | "c"
,就像具有更多属性的对象类型是其属性的子类型(我们也通过extends
接口和class
语法表示)的子类型。
我们(嗯,好吧,我)习惯于认为子类型比超类型具有“更多的东西”,因为我习惯于考虑对象类型(这是真的,{a: number; b: number;}
是 的子类型{a: number;}
),但是对于联合它是反过来,子类型的成员比超类型少。
更多推荐
Typescript,Pick
发布评论