Kako prebrisati svojstva tipa u TypeScriptu
Na primjer, imam
type Line = {
start: Point;
end: Point;
color: string; //'cyan'/'aquablue'/...
}
Ali sada želim stvoriti novi tip linije na bazi Linije, tako da pohranjuje boju kao broj:
type HexColorLine = Point & {
color: number;
}
Sada očekujem da tip HexColorPoint bude jednak
{
start: Point;
end: Point;
color: number;
}
Ali to je jednako
{
start: Point;
end: Point;
color: string | number;
}
Postoji li način da se prepiše, ali ne i proširi tip svojstva nekom kratkom sintaksom? Moram li stvarno definirati potpuno novi tip za ovo?
Odgovor #1
Stvorite pomoćni tip:
type Overwrite<T, U> = Pick<T, Exclude<keyof T, keyof U>> & U;
Upotreba :
type HexColorLine = Overwrite<Line, { color: number }>
Odgovor #2
Jednostavno jednokratno rješenje od TypeScripta 3.5 moglo bi biti:
type HexColorLine = Omit<Line, 'color'> & {
color: number;
}
Odgovor #3
U TypeScriptu 3.5 ili novijem možete koristiti Omit<Type, Keys>.
Za vrste:
type HexColorPoint = Omit<Line, "color"> & {
color: number;
}
Za sučelja:
interface HexColorPoint extends Omit<Line, "color"> {
color: number;
}
