Typlöschung
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
BearbeitenTyplö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
BearbeitenDie 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- Christian Ullenboom: Java ist auch eine Insel. Rheinwerk Verlag, 2021, ISBN 978-3-8362-8745-6.
Einzelnachweise
Bearbeiten- ↑ Type-Erasure - Praktisches Type-Erasure in C++. Abgerufen am 9. September 2023.
- ↑ a b Handbook - The Basics. In: typescriptlang.org. Abgerufen am 9. September 2023 (amerikanisches Englisch).
- ↑ Klaus Kreft, Angelika Langer: Java Generics - Type Erasure and Raw Types. In: JavaSPEKTRUM. Juli 2007, abgerufen am 9. September 2023.