Skip to content

Nyttetyper i TypeScript forklart

TypeScripts innebygde nyttetyper og nøkkelordene som følger med dem, gruppert etter jobb: endre formen på et objekt, filtrere en union, beskrive en funksjon, transformere en litteral streng og hente typer fra verdier. Hver rad viser typen og et reelt alias du ville skrevet.

Nyttetyper er generiske funksjoner for typer: de tar én eller to typer og returnerer en ny, slik at du slipper å skrive hver form for hånd. De utmerker seg for avledede typer, der sannhetskilden er en annen type eller en verdi, og du vil at typene dine skal følge den automatisk. Tumeregelen er å avlede i stedet for å duplisere: endrer du kilden, følger den avledede typen med.

Referansetabell · 22 oppføringer
22 of 22 rows
Objektform
T der alle egenskaper er gjort valgfrie.type Update = Partial<User>
T der alle egenskaper er gjort obligatoriske.type Strict = Required<Opts>
T der alle egenskaper er gjort skrivebeskyttede.type Frozen = Readonly<User>
T der kun nøklene i K er beholdt.type Preview = Pick<User, "id" | "name">
T der nøklene i K er fjernet.type SafeUser = Omit<User, "password">
Et objekt der nøklene er K og verdiene er V.type Scores = Record<string, number>
Unionfiltrering
Unionen U der medlemmer som kan tilordnes X, er fjernet.type NoNull = Exclude<T, null>
Medlemmene av U som kan tilordnes X.type OnlyStr = Extract<T, string>
T der null og undefined er fjernet.type Def = NonNullable<T>
Funksjonstyper
En tuppel av parametertypene til funksjonen F.type P = Parameters<typeof fn>
Typen som funksjonen F returnerer.type R = ReturnType<typeof fn>
En tuppel av parametertypene til konstruktøren F.type C = ConstructorParameters<typeof Date>
Instanstypen som konstruktøren F produserer.type D = InstanceType<typeof Date>
Typen en Promise løses til, rekursivt.type Data = Awaited<Promise<User>>
Transformering av litterale strenger
Strengelitteralen S med store bokstaver.type A = Uppercase<"abc"> // "ABC"
Strengelitteralen S med små bokstaver.type B = Lowercase<"ABC"> // "abc"
S der det første tegnet er i stor bokstav.type C = Capitalize<"abc"> // "Abc"
S der det første tegnet er i liten bokstav.type D = Uncapitalize<"Abc"> // "aBc"
Beslektede nøkkelord
En union av egenskapsnøklene til objekttypen T.type K = keyof User
Typen til en verdi, uten å skrive den ut på nytt.type Config = typeof defaults
Fang en type inne i en betinget type for gjenbruk.type El<T> = T extends Array<infer I> ? I : never
Velg typen X eller Y avhengig av om T kan tilordnes U.type IsStr<T> = T extends string ? true : false