Anzeige
Anzeige
News

Flexiblere Platzierung von Rest-Elementen in Tupeln und mehr: Das ist neu in TypeScript 4.2

TypeScript 4.2 steht in den Startlöchern. Der neue Release der optional statisch typisierten Programmiersprache punktet mit strengeren Checks des in-Operators und mehr Flexibilität für Tupel, deren Rest-Elemente sich nun auch in der Mitte oder am Anfang befinden dürfen.

3 Min.
Artikel merken
Anzeige
Anzeige

TypeScript erfreut sich steigender Beliebtheit.  (Foto: Joyseulay / shutterstock)

TypeScript, das JavaScript-Derivat aus dem Hause Microsoft, hat mit Version 4.2 ein Update erhalten – und bringt neben einigen wenigen Breaking Changes auch spannende Neuerungen mit.

Mehr Flexibilität für Rest-Elemente in Tupeln

Anzeige
Anzeige

Ursprünglich wurden Tuple-Typen in TypeScript eingeführt, um Arrays von einer bestimmten Länge und mit bestimmten Elementtypen zu modellieren. Seit einiger Zeit kommen sie auch bei Modellierung von Parameter-Listen in JS zum Einsatz und verfügen über optionale Elemente und Rest-Elemente sowie über Tooling- und Readability-Label. Ähnlich wie Rest-Parameter in JS stehen TypeScripts Rest-Elemente für eine beliebige Anzahl von Elementen. In TypeScript 4.2 wurden Tuple nun so überarbeitet, dass Rest-Elemente statt nur am Ende eines Tupels auch mittig oder am Anfang platziert werden können. Einzige Einschränkung: Pro Tupel darf maximal ein Rest-Element vorkommen, dem zudem keine weiteren optionalen Elemente folgen dürfen. Strukturen wie

interface Clown { /*...*/ }
interface Joker { /*...*/ }

let StealersWheel: [...Clown[], "me", ...Joker[]];
// ~~~~~~~~~~ Error!
// A rest element cannot follow another rest element.

und

Anzeige
Anzeige
let StringsAndMaybeBoolean: [...string[], boolean?];
// ~~~~~~~~ Error!
// An optional element cannot follow a rest element.

sind demnach nicht möglich.

Anzeige
Anzeige

Verbesserte Type Alias Preservation

Aliase werden in TypeScript nach einem allgemeingültigen Regelwerk angezeigt – vor allem im Zusammenhang mit Code-Editoren wie Visual Studio Code war das oft problembehaftet. Hovern wir im folgenden Code-Snippet in VS Code mit der Maus über t3n, informiert ein Info-Panel darüber, dass es sich dabei um eine Entität vom Typ BasicPrimitive
handelt.

Anzeige
Anzeige
export type BasicPrimitive = number | string | boolean;

export function doStuff(value: BasicPrimitive) {
let t3n = value;
return t3n;
}


Wenn anstelle der Variable t3n ein BasicPrimitive oder undefined zurückgegeben werden soll, zeigt TypeScript anstelle des erwarteten Return-Types BasicPrimitive oder undefined stattdessen string | number | boolean | undefined.
export type BasicPrimitive = number | string | boolean;

export function doStuff(value: BasicPrimitive) {
if (Math.random() < 0.5) {
return undefined;
}

return value;
}

Der Grund ist eine Ungenauigkeit in TypeScripts internaler Typenrepräsentation, die mit TypeScript 4.2 jetzt behoben wurde. Das führt außerdem zu einem verbesserten .d.ts-Datei-Output sowie genaueren Fehlermeldungen und In-Editor-Type-Informationen. Wer sich im Detail für die Implementation interessiert, kann den ersten Pull-Request zum Feature zurate ziehen.

Striktere Checks für den in-Operator

Auch bei der korrekten Verwendung des in-Operators schaut der neueste Release der Programmiersprache genauer hin: Wer ihn fehlerhaft einsetzt – erlaubt ist er schließlich nur für Objekttypen und nicht für Primitive –, erhält mit TypeScript 4.2 eine entsprechende Warnung.

Die Projektstruktur besser verstehen: Neue –explainFiles Flag

Eine Frage, die sich TypeScript-User laut Blogpost zum Release häufig zu stellen scheinen, lautet: „Warum inkludiert TypeScript eine bestimmte Datei?“ Die neue --explainFiles-Flag hält Antworten bereit – wenn ihr bereit seid, euch durch den resultierenden umfangreichen Output des Compilers zu arbeiten.

Anzeige
Anzeige

Breaking Chances

Zwar hatte das Team hinter der Programmiersprache versucht, nicht abwärtskompatible Änderungen nach Möglichkeit gering zu halten, ganz ohne kommt der neue Release jedoch leider nicht aus. So erlaubt der in-Operator mit der neuen Version keine Primitive Types zu seiner Rechten und es gibt ein neues Größenlimit für Tuples mit Spread-Elementen.

Alle Details zu weiteren Neuerungen, wie die Möglichkeit abstrakter Konstrukte oder eine weitere Flag namens --noPropertyAccessFromIndexSignature und natürlich alle Breaking Changes, die ihr bei einem Upgrade im Auge behalten solltet, könnt ihr im Blogpost zum Release nachlesen.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige