In der Softwareentwicklung bezeichnet Typlöschung (lehnübersetzt aus dem englischen Ausdruck Type Erasure) den Prozess, durch welchen Typen aus dem Programm entweder vollständig oder teilweise entfernt werden, bevor es zur Laufzeit ausgeführt wird.[1] Typlöschung kommt in Programmiersprachen zum Einsatz, in denen die operationelle Semantik keine Typen während der Programmausführung erfordert, oder um Kompatibilität der kompilierten Binärdateien aus verschiedenen Versionen einer Programmiersprache sicherzustellen.

Verwendung

Bearbeiten

Typlöschung kommt unter anderem bei der Transkompilierung von TypeScript zu JavaScript zum Einsatz.[2] Dabei werden sämtliche expliziten Typsignaturen entfernt, da JavaScript als dynamisch typisierte Sprache keine Typdeklarationen im Code verwendet. Der TypeScript Compiler entfernt bei der Kompilierung des nachfolgenden Code-Abschnitts somit sämtliche Typen:

function greet(person: string, date: Date) {
	console.log(`Hello ${person}, today is ${date.toDateString()}!`);
}
 
greet("Maddison", new Date());

Dadurch entsteht (nach weiteren, vorgenommenen Kompilierungsschritten) der nachfolgende JavaScript-Code:[2]

"use strict";
function greet(person, date) {
    console.log("Hello ".concat(person, ", today is ").concat(date.toDateString(), "!"));
}
greet("Maddison", new Date());

Zu beachten ist hierbei insbesondere die Funktionssignatur, in welcher die beiden expliziten Typdeklarationen entfernt wurden.

Des Weiteren wird Typlöschung bei der Entfernung bzw. Umwandlung generischer Typen in Java 5 verwendet.[3]

Typinferenz

Bearbeiten

Die umgekehrte Operation ist die Typinferenz. Durch Typinferenz kann während der Programmierung auf die explizite Angabe von Typen verzichtet werden, sofern diese aus den restlichen Angaben und den Typisierungsregeln der jeweiligen Programmiersprache abgeleitet werden können.

Literatur

Bearbeiten

Einzelnachweise

Bearbeiten
  1. Type-Erasure - Praktisches Type-Erasure in C++. Abgerufen am 9. September 2023.
  2. a b Handbook - The Basics. In: typescriptlang.org. Abgerufen am 9. September 2023 (amerikanisches Englisch).
  3. Klaus Kreft, Angelika Langer: Java Generics - Type Erasure and Raw Types. In: JavaSPEKTRUM. Juli 2007, abgerufen am 9. September 2023.