Tikskrif sjabloon String tipes

Hoe om stringtipes te vernou met behulp van die sjabloon-stringmeganisme

Wat is sjabloon letterlike tipes

Aangesien Typescript 4.1 die tipes vir u snare aansienlik verbeter. Net om vinnig saam te vat, kan u sogenaamde "letterlike tipes" in Typescript definieer. In plaas daarvan om 'n veranderlike net as string te definieer, kan u die tipe beperk tot 'n spesifieke stel toutjies wat toegelaat word.

// Define a mutable string as 'Literal Type'.
let key: "name" | "department" = "name";

// This works, as 'department' is part of the type.
key = "department";
// Won't work, as it's not define in the union type.
key = "company";

// Of course, the same applies for functions.
function getKey(): "name" | "department" {
  return Math.random() <= 0.5 ? "name" : "department";
}

Begin met Typescript 4.1, en hierdie konsep is verder ontwikkel. Deur "Template Literal Strings" uit Javascript as inspirasie te neem, kan u dieselfde sintaksis toepas vir u letterlike tipes in Typescript. Die grootste verskil is dat u met "Template Literal Types" veel meer buigsaamheid kry, aangesien die tipe self parameters vir hierdie vorm kan aanneem - die konsep is soortgelyk aan generika, maar effens anders omdat dit spesifieke waardes benodig.

// Define a Literal Type
type State = "ready";

// Nice, isn't it? As in Javascript's 
// 'template literal strings', we can
// reuse the same syntax for TS.
//
// The create type here is now 'Key-ready'.
type Key = `key-${State}`;
// This of course works for union types as well.
// Let's take these non-descriptive types for a 
// quick demo:
type GraphState = "sleep" | "ready" | "error";
type MachineState = "booting" | "running";

// And here's the 'template literal type':
type EntityState = `ES-${GraphState | MachineState}`;

// The possible combinations therefore 
// work out like this:
//
// type EntityState = 'ES-sleep' 
//  | 'ES-ready'
//  | 'ES-error'
//  | 'ES-booting'
//  | 'ES-running'

Daar is nog meer met Typescript 4.3

Terwyl ek dit skryf, is die vrylatingskandidaat vir Typescript 4.3 vrygestel, wat verdere verbeterings aan die letterlike lettertipes insluit.

Die tipe stelsel is nou selfs meer dinamies en kan die regte soorte vir u beter aflei. Hierdie nuutste veranderinge is verder verouderd met die tipe tekenreeks.

// This example is taken 1:1 from 
// Typescript's 4.3 announcement.
// Please check out the link in the
// addendum to see all examples!

declare let s: string;
declare function f<T extends string>(x: T): T;

// Previously: string
// Now       : `hello-${string}`
let x2 = f(`hello ${s}`);

Afsluiting

Soos u gesien het, is Typescript so 'n kragtige taal as dit kom by die definisie van dinamiese tipes. Dit geld veral vir tipes op toue. Met die jongste veranderinge in weergawe 4.3, kan die tipe stelsel die regte tipes beter as ooit aflei, wat die werk met Typescript net 'n plesier maak.

Voorstelle

Verwant

Aanhangsel

Tale