Programmiersprache: TypeScript 4.1 erweitert zugeordnete und mit Zeichenfolgen versehene Schriftarten

Microsoft hat die erste Beta-Model von TypeScript 4.1 veröffentlicht. Die Edition bietet eine erhöhte Flexibilität für literarische Zeichenfolgentypen und zugeordnete Typen. Es gibt auch ein neues Flag, um Fehler bei der Behandlung von Indexsignaturen zu vermeiden, und das JavaScript-Overlay ermöglicht jetzt rekursive bedingte Typen.

Die Schriftarten der neuen Vorlage erweitern die Schriftarten auf die gleiche Weise wie Vorlagenliteratur in JavaScript Zeichenfolgen erweitern: Die einzelnen Zeichenfolgenliterale können Syntaxvorlagen sein $expression enthalten. In String-Literaturtypen wird eine Reihe von Strings verwendet, um die zulässigen Werte zu definieren.

Die Verwendung ist unter anderem nützlich, wenn Sie literarische Zeichenfolgentypen verknüpfen, wie im folgenden Beispiel aus dem TypeScript-Blog, abgekürzt mit einer Mundreferenz:

kind VerticalAlignment = "top" | "center" | "bottom"
type HorizontalAlignment = "still left" | "middle" | "appropriate"

// Can take
//   | "top rated-left"    | "top-center"    | "top rated-ideal"
//   | "middle-left" | "middle-centre" | "middle-correct"
//   | "base-remaining" | "base-centre" | "bottom-appropriate"
declare operate 
  setAlignment(worth: 
              `$VerticalAlignment-$HorizontalAlignment`): void

setAlignment("prime-still left")   // functions!
setAlignment("major-middel") // mistake!
setAlignment("leading-pot")    // error! 

Der Code kombiniert die beiden strengen Schriftarten VerticalAlignment und HorizontalAlignment und bietet somit jede Kombination von vertikaler und horizontaler Ausrichtung, d.h. Insgesamt neun definierte Werte aus drei mal drei Spezifikationen. Neben den einfachen, viel komplexeren Beispielen, die sich auch mit der Entwicklung jedes Typs befassen, finden Sie im Blog.

Zugeordnete Typen ermöglichen die Erstellung von Objekttypen mithilfe von Schlüsseln wie in kind Beispiel = [K in "a" oder als Erweiterung anderer Typen wie in form Partial = [K in keyof T]?: T[K].

Mit TypeScript 4.1 ist es möglich, die Schlüssel manuell über das Schlüsselwort einzugeben as zu entscheiden. In Kombination mit den Literaltypen der Vorlage können neue Eigenschaftsnamen auf der Grundlage vorhandener Namen generiert werden, wie im folgenden Artikel aus dem TypeScript-Weblog zum Erstellen von Getter-Addresses für die Variablen in einer Schnittstelle:

kind Getters = 
  [K in keyof T as `get$capitalize K`]: () => T[K]


interface Individual 
  title: string
  age: amount
  site: string


sort LazyPerson = Getters

Die mit der aktuellen Variation eingeführten rekursiven bedingten Typen ermöglichen eine flexiblere Behandlung von bedingten Typen. Insbesondere können sich diese nun auf sich selbst beziehen. Der Weblog-Beitrag enthält ein Beispiel für die Ermittlung der Arten verschachtelter Matrizen:

kind ElementType =
  T extends ReadonlyArray ? ElementType : T

functionality deepFlatten(x: T): 
  ElementType[] 
    throw "not applied"


// All of these return the sort 'number[]':
deepFlatten([1, 2, 3])
deepFlatten([[1], [2, 3]])
deepFlatten([[1], [[2]], [[[3]]]])

In dem Blogbeitrag wird jedoch ausdrücklich darauf hingewiesen, dass rekursive Typen die für die Typprüfung erforderliche Zeit erheblich verlängern können und dass Entwickler rekursive bedingte Typen verantwortungsbewusst und sparsam verwenden sollten.

Erwähnenswert ist auch der kürzlich eingeführte TypeScript-Parameter --noUncheckedIndexedAccess für den Zugriff auf Indexsignaturen:

interface Solutions 
  route: string
  permissions: range

  // Added attributes are caught by this index signature.
  [propName: string]: string 

Zuvor ging TypeScript davon aus, dass alle Eigenschaften vom Typ waren string oder number muss sein. Mit dem neuen Flag berücksichtigt der Compiler den direkten Zugriff auf Eigenschaften wie die in foo.bar oder über den Index wie in foo["bar"] möglicherweise undefined kann sein.

Andere Innovationen wie die Verwendung von paths ohne baseUrl Lied TypeScript-Site entfernen. Wenn Sie die Beta testen möchten, können Sie dies tun Herunterladen von NuGet oder über npm mit dem Befehl npm install typescript installieren. Der Release-Kandidat wurde im Oktober bekannt gegeben und die Erfahrung hat gezeigt, dass die endgültige Model, genau wie bei TypeScript 4., kurz danach erwartet werden kann.


(rme)

Zur Website

READ  Schützt Vitamin D vor schwerer koronarer Herzkrankheit? Viele Deutsche leiden unter gefährlichen Engpässen

You May Also Like

About the Author: Adalinda Fiedlerg

"Musik-Vorreiter. Begeisterter Speck-Evangelist. Absoluter Kaffee-Enthusiast. Freundlicher Fan der Popkultur."

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.