Typescript slå sammen typer
Jeg har type A og type B
type A = {
kind: "A",
value: string,
value2: string,
value3: string,
};
type B = { kind: "B" } & A ;
Jeg vil skrive at B har alle egenskapene til typen A men med ulik kind-verdi
Men når jeg skriver dette
const temp: B = {
kind: "B",
value: "X",
value2: "X2",
value3: "X3",
};
Jeg får denne feilen
TS2322 type
stringkan ikke tilordnes til typenever
Svar #1
Dette er fordi kind ikke kan være av typen «A» og «B» samtidig.
Måter å fikse på:
1. Generiske typer:
type WithKind<T extends string> = {
kind: T,
value: string,
value2: string,
value3: string,
}
type A = WithKind<"A">;
type B = WithKind<"B">;
2. Utelat:
type B = Omit<A, "kind"> & { kind: "B" } ;
Svar #2
Ditt problem stammer fra det faktum at
"A" & "B" === never
Hvis du vil overstyre en fast strengverdi med en ny, kan du først utelate den.
type B = { kind: "B" } & Omit<A, "kind">;
