typescript - Använda Pick för att hämta alla nycklar av en viss typ


Finns det ett sätt att använda Pick<T, K> för att extrahera alla nycklar av en viss typ?

Exempel :

type MyObject = {
  a: string;
  b: number;
  c: string;
  d: boolean;
}

Jag vill extrahera alla string-typer, så slutlig typ kommer att vara:

type NewType = {
  a: string;
  c: string;
}

Svar #1

Först behöver du extrahera alla nycklar som har string-värdestyper:

type StringKeys<T> = { [P in keyof T]: T[P] extends string ? P : never }[keyof T]

type NewType = Pick<MyObject, StringKeys<MyObject>>; // { a: string; c: string; }

Lekplats

Relaterade artiklar