Bald veraltet: TypeScript 5.3 Beta verzichtet auf Assertions

Die neue Beta-Version 5.3 von TypeScript bietet insbesondere den Import von Attributen, die das zu erwartende Format ankündigen und die Assertions ablösen.

In Pocket speichern vorlesen Druckansicht

(Bild: sommart sombutwanitkul/Shutterstock.com)

Lesezeit: 2 Min.

Version 5.3 Beta von TypeScript, der beliebten typensicheren JavaScript-Erweiterung, geht in puncto Sicherheit einen Schritt weiter: Sie ermöglicht den Import von Attributen, die das zu erwartende Format eines Imports mitteilen. Ein Beispiel des TypeScript-Teams:

import obj from "./something.json" with { type: "json" };

Die Information "json" stellt sicher, dass es sich um Json-Code handelt und nicht um ein JavaScript-Executable mit der Endung .json, das Schaden anrichten kann. Was das Attribut enthält, ist für TypeScript gleichgültig, und es überlässt die Interpretation dem Browser oder der Runtime. Theoretisch wäre möglich:

import * as foo from "./foo.js" with { type: "fluffy bunny" };

sofern der Browser den Type Fluffy Bunny verarbeiten kann. Auch die Funktion import() kann Attribute verarbeiten:

const obj = await import("./something.json", {
with: { type: "json" }
});

Importattribute werden Import-Assertions ablösen, die es seit Version 4.5 in TypScript gibt. Entwicklerinnen und Entwickler sollten älteren Code also überarbeiten und assert-Funktionen in solche mit with ändern.

Neu ist auch ein resolution-mode beim Import, der den Modus import oder require festlegt. Ein Beispiel:

import type { TypeFromRequire } from "pkg" with {
"resolution-mode": "require"
};

import type { TypeFromImport } from "pkg" with {
"resolution-mode": "import"
};

export interface MergedType extends TypeFromRequire, TypeFromImport {}

Weitere Neuerungen in Version 5.3 betreffen beispielsweise einige Methoden des Narrowing oder eine genauere Prüfung des super-Zugriffs auf die Basis-Klasse. Weitere Details finden sich in der Ankündigung im Developer-Blog. Interessenten können die neue Version über NuGet laden oder über npm mit dem Befehl:

npm install -D typescript@beta

(who)