如何覆盖属性类型?

2024-01-06

鉴于我有以下结构

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(使用前将#替换为@)

如何覆盖属性类型? 的相关文章

随机推荐