Addition und Subtraktion auf Typebene
Erstellen Sie arithmetische Operationen durch Tupelmanipulation.
Addition und Subtraktion auf Typebene ist eine kostenlose TypeScript Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des TypeScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.
Arithmetik anhand der Länge
Bei der Darstellung über die Tupellänge wird die Addition zur Konkatenation und die Subtraktion zum Entfernen eines Präfixes. Sie rechnen mit Tupeln und lesen anschließend die Länge des Ergebnisses aus.
type BuildTuple<N extends number, Acc extends unknown[] = []> =
Acc["length"] extends N ? Acc : BuildTuple<N, [...Acc, unknown]>;Addition
Für die Addition A + B erstellen Sie ein Tupel der Länge A und eines der Länge B, fügen beide per Spread-Syntax in ein neues Tupel ein und lesen dessen Länge aus.
type Add<A extends number, B extends number> =
[...BuildTuple<A>, ...BuildTuple<B>]["length"];
type S = Add<3, 4>; // 7Warum Konkatenation addiert
Auf ein Tupel der Länge 3 folgt ein Tupel der Länge 4, wodurch ein Tupel der Länge 7 entsteht. Wenn Sie die Striche zweier Strichlisten zusammenfügen, erhalten Sie eine gemeinsame Strichliste – daher addieren sich die Längen.
type A = Add<2, 2>; // 4
type B = Add<0, 5>; // 5
type C = Add<1, 6>; // 7Subtraktion über ein Präfix
Um A - B zu berechnen, erstellen Sie ein Tupel der Länge A und inferieren es anschließend als Präfix der Länge B, gefolgt von einem Rest. Der rest hat die Länge A - B.
type Sub<A extends number, B extends number> =
BuildTuple<A> extends [...BuildTuple<B>, ...infer Rest]
? Rest["length"]
: never;
type D = Sub<7, 4>; // 3Subtraktion durch schrittweises Durchlaufen
Für Sub<7, 4> erstellen Sie ein Tupel der Länge 7, gleichen ein Präfix der Länge 4 ab, erfassen Rest (Länge 3) und lesen dessen Länge aus. Das entfernte Präfix umfasst genau B Striche.
type A = Sub<5, 2>; // 3
type B = Sub<4, 4>; // 0Unterlauf gibt never zurück
Typstufen-Zahlen sind hier nichtnegativ. Wenn B > A gilt, existiert kein gültiges Präfix, das Muster schlägt fehl und das Ergebnis ist never. Sie können stattdessen standardmäßig 0 zurückgeben, wenn Sie das bevorzugen.
type A = Sub<2, 5>; // never
type SubSafe<A extends number, B extends number> =
[Sub<A, B>] extends [never] ? 0 : Sub<A, B>;
type B = SubSafe<2, 5>; // 0Inkrementieren und Dekrementieren
Sonderfälle der Addition und Subtraktion um eins kommen häufig genug vor, um ihnen eigene Namen zu geben. Inc hängt ein Element an, Dec entfernt eines.
type Inc<N extends number> = [...BuildTuple<N>, unknown]["length"];
type Dec<N extends number> =
BuildTuple<N> extends [unknown, ...infer R] ? R["length"] : 0;
type A = Inc<4>; // 5
type B = Dec<4>; // 3Multiplikation durch Wiederholung
Multiplikation ist wiederholte Addition. Addieren Sie B mithilfe von Dec A-mal zu einem Akkumulator und verwenden Sie Add, um die Ergebnisse anzusammeln.
type Mul<A extends number, B extends number, Acc extends number = 0> =
A extends 0 ? Acc : Mul<Dec<A>, B, Add<Acc, B>>;
type A = Mul<3, 4>; // 12Der Hilfstyp BuildTuple
Jede hier vorgestellte Operation hängt von BuildTuple ab. Es ist das einzige wiederverwendbare Grundelement: Übergeben Sie eine Zahl und erhalten Sie ein Tupel dieser Länge. Halten Sie es an einer Stelle und bauen Sie den Rest darauf auf.
type Five = BuildTuple<5>; // [unknown, unknown, unknown, unknown, unknown]
type N = Five["length"]; // 5Operationen kombinieren
Da jede Operation eine Zahl entgegennimmt und eine Zahl zurückgibt, lassen sie sich frei kombinieren. Sie können Ausdrücke wie Add<Mul<2, 3>, 4> schreiben, und der Compiler wertet sie aus.
type Result = Add<Mul<2, 3>, 4>; // 10Praktischer Hinweis
Diese Tricks eignen sich hervorragend für kleine Anzahlen: Array-Indizes, feste Größen und begrenzte Wertebereiche. Für große Zahlen oder allgemeine Mathematik sind sie wegen der Rekursionsgrenze und der fehlenden Unterstützung für negative Zahlen unpraktisch. Verwenden Sie sie, wenn die Werte klein und statisch bleiben.
type A = Add<8, 7>; // 15 (fine)
// Add<5000, 5000> would exceed recursion limitsSchnelltest
Testen Sie Ihr Verständnis der Typarithmetik.
Zusammenfassung
Sie haben Arithmetik im Typsystem umgesetzt.
- Add: Tupel konkatenieren und die Länge auslesen.
- Sub: ein Präfix inferieren und die Länge des Rests auslesen.
Inc/Decsind die Varianten für einen einzelnen Schritt.BuildTupleist das gemeinsame Grundelement.
Als Nächstes: Zahlen auf Typebene vergleichen.
Häufig gestellte Fragen
Ist die Lektion „Addition und Subtraktion auf Typebene“ kostenlos?
Ja — der vollständige Text von „Addition und Subtraktion auf Typebene“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des TypeScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Addition und Subtraktion auf Typebene“?
Erstellen Sie arithmetische Operationen durch Tupelmanipulation. Du übst TypeScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um TypeScript Academy zu starten?
Keine Vorkenntnisse erforderlich. TypeScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Addition und Subtraktion auf Typebene“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser TypeScript Academy-Lektion Code schreiben und ausführen?
Ja. Jede TypeScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Zählen mit der Tupellänge
- Addition und Subtraktion auf Typebene
- Vergleiche auf Typebene
- Praktische numerische Typ-Utilities