[英]Typescript merge types
我有A
型和B
型
type A = {
kind: "A",
value: string,
value2: string,
value3: string,
};
type B = { kind: "B" } & A ;
我想键入B
具有类型A
所有属性,但具有不同的kind
值
但是当我写这个
const temp: B = {
kind: "B",
value: "X",
value2: "X2",
value3: "X3",
};
我收到这个错误
TS2322 类型
string
不可分配给类型never
你的问题源于这样一个事实
"A" & "B" === never
如果你想用一个新的值覆盖一个固定的字符串值,你可以先省略它。
type B = { kind: "B" } & Omit<A, "kind">;
这是因为 kind 不能是同一类型的“A”和“B”类型。
修复方法:
1. 泛型:
type WithKind<T extends string> = {
kind: T,
value: string,
value2: string,
value3: string,
}
type A = WithKind<"A">;
type B = WithKind<"B">;
2.省略:
type B = Omit<A, "kind"> & { kind: "B" } ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.