Middle+
Hogyan deklaráljunk egy új típust a Foo alapján, de a és c mezők nélkül, Omit használata nélkül?
sobes.tech MI
Válasz az MI-től
Az Foo alapú új típus deklarálásához, kizárva az a és c mezőket anélkül, hogy az Omit-et használnánk, az Pick és Exclude metódusok metszetét használhatja. Például, ha az Foo rendelkezik a, b, c, d mezőkkel, akkor egyértelműen megadhatja a szükséges mezőket:
interface Foo {
a: string;
b: number;
c: boolean;
d: Date;
}
type WithoutAandC = Pick<Foo, Exclude<keyof Foo, 'a' | 'c'>>;
Itt az Exclude<keyof Foo, 'a' | 'c'> kizárja az a és c kulcsokat a Foo összes kulcsából, és a Pick kiválasztja a maradék mezőket. Így olyan típust kap, amelyik nem tartalmazza az a és c mezőket, anélkül, hogy közvetlenül az Omit-et használná.