鉴于我有以下结构
type AB = {
A: string;
B: string;
}
但现在我想创建一个新类型,它可以扩展键,但也可以覆盖“A”属性。所以最终类型应该是
{
A: number;
B: string;
}
所以我尝试将 AB 类型分配给我的最终类型,并用新类型附加“A”属性
type final = AB & {A: number};
但它不起作用:(
所以我的问题是;如何将类型扩展到其他具有更改属性类型的类型?
我不确定这是否是最优雅的解决方案,但您可以使用映射类型来过滤掉要覆盖的键,然后将其与覆盖相交:
type Override<T1, T2> = {
[K in Exclude<keyof T1, keyof T2>]: T1[K]
} & {
[K in keyof T2]: T2[K]
};
type final = Override<AB, { A: number }>;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)