Inline-Shape-Annotationen
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy — Lektion 37 von 73.
In Lua nutzt du Tabellen schon lange als Records: local user = {name = "Ana", age = 20}. Nichts hält dich davon ab, ein Feld falsch zu schreiben, eines zu vergessen oder einen String dort zu speichern, wo eine Zahl hingehört — du findest es erst heraus, wenn der Code läuft.
Luau ermöglicht es dir, die Form (Shape) einer solchen Tabelle direkt in der Deklaration zu beschreiben, indem du jedes Feld und seinen Typ zwischen geschweiften Klammern auflistest:
local user: {name: string, age: number} = {
name = "Ana",
age = 20,
}Vergleiche dies mit den Tabellentypen, die du bereits kennst: {number} beschreibt ein Array und {[string]: number} beschreibt eine Map mit beliebigen String-Schlüsseln. Eine Shape ist präziser — sie benennt jedes Feld einzeln und gibt jedem Feld seinen eigenen Typ.
Sobald die Shape deklariert ist, überprüft der Type Checker die Tabelle beim Bearbeiten gegen diese Form. Ein fehlendes Feld oder ein falscher Werttyp wird gemeldet, bevor der Code jemals ausgeführt wird:
local user: {name: string, age: number} = {
name = "Ana",
age = "twenty", -- ✗ Typfehler: string ist keine number
}Wie immer fügt die Annotation kein Laufzeitverhalten hinzu — die Tabelle ist eine normale Lua-Tabelle. Inline-Shapes eignen sich perfekt für einmalige Strukturen, die du nicht wiederverwenden möchtest; in der nächsten Lektion wirst du Shapes einen Namen geben.
Aufgabe
EinfachErstelle eine Variable namens student mit einer Inline-shape-annotation, die Folgendes deklariert:
namevom TypstringstudentIdvom TypnumberisEnrolledvom Typboolean
Initialisiere sie mit name "Sarah Johnson", studentId 12345 und isEnrolled true.
Erstelle eine zweite Variable namens course mit einer Inline-shape-annotation, die Folgendes deklariert:
titlevom Typstringcreditsvom Typnumberinstructorvom Typstring
Initialisiere sie mit title "Introduction to Luau", credits 3 und instructor "Dr. Smith".
Gib Folgendes jeweils in einer eigenen Zeile aus:
- den Namen des
student - die ID des
student - den Titel des
course - die Anzahl der
credits
Probier es selbst
-- Schreibe den Code hier
-- 1) deklariere student mit einer Inline-Shape-Annotation
-- 2) deklariere course mit einer Inline-Shape-Annotation
-- 3) gib die vier angeforderten Felder aus
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Einführung in Luau
1Erste Schritte mit Luau
Was ist Luau?Warum Luau nutzen?Dein erster Luau-CodeTypprüfung & FehlermodiZusammenfassung: Einführung in Luau4Arbeiten mit Funktionen
Typisierung von Parametern & RückgabewertenTypisierung von anonymen FunktionenFunktionen ohne RückgabewertOptionale ParameterStandard-ParameterwerteVariadische FunktionenDefinieren von FunktionstypenZusammenfassung: Typisierte Funktionen2Grundtypen
Grundlegende Typen: num, str, boolDer Typ 'any': Der AuswegDer Typ 'unknown'Nil- & optionale TypenTypinferenz in der PraxisExplizite TypannotationenZusammenfassung: Praxis zu Grundtypen5Typ-Aliase, Union-Typen und Schnittmengen-Typen
Typ-Aliase für PrimitivenUnion-TypenArbeiten mit Union-TypenLiterale TypenSchnittmengen-Typen (Intersection Types)Kombination von Typ-AliasenZusammenfassung: Fortgeschrittene Typ-Kombinationen3Typisierte Tabellen: Arrays & Maps
Typisierte ArraysHinzufügen und Lesen von ElementenWas ist ein Map-Typ?Deklarieren und Zugreifen auf MapsIterieren von TabellenGemischt-strukturierte TabellenMehrdimensionale typisierte Arraystable.unpack und VarargsZusammenfassung: Arrays und Maps6Typisieren von Tabellen-Shapes
Inline-Shape-AnnotationenTyp-Aliase für ShapesOptionale EigenschaftenShapes vs. lose TabellenShapes erweiternMethoden zu Shapes hinzufügenSelf und Methoden mit DoppelpunktZusammenfassung: Definieren von Tabellen-Shapes