Aufwärmen · Aufgabe 1 von 7
// B1.2 · ca. 30 Min. · Einstieg
TypeScript 7.0 installieren und tsc ausführen
Nach dieser Lektion installieren Sie TypeScript 7.0 in einem Projekt, prüfen, welches tsc es ausführt, und prüfen ein Projekt aus mehreren Dateien mit npx tsc.
Danach können Sie
- TypeScript 7.0 mit npm installieren und prüfen, welche Version npx tsc ausführt
- npx tsc für ein Projekt ausführen und an der Ausgabe erkennen, welche Datei und Zeile zu korrigieren ist
- Zwischen Dateien importieren, sodass npx tsc keine Fehler meldet und node main.ts läuft
Vorhersagen · Aufgabe 2 von 7
Sagen Sie es vorher: Heute (30. September 2026) führen Sie in einem neuen Projekt npm install -D typescript aus, dann npx tsc --version. Was wird ausgegeben?
Üben · Aufgabe 3 von 7
Ergänzen Sie die kurze Option, die TypeScript als Entwicklungsabhängigkeit des Projekts speichert.
npm install typescriptÜben · Aufgabe 4 von 7
main.ts enthält import {half} from "./math.ts"; und in Zeile 3 console.log(half(9));. Das hier ist math.ts. Was meldet npx tsc?
export function half(n: number): number { const result = n / 2; return result.toFixed(1); }Üben · Aufgabe 5 von 7
Ordnen Sie jedem Befehl zu, was er tut.
Denksport · Aufgabe 6 von 7
Knobelaufgabe. Der Ordner enthält package.json, die tsconfig.json des Kurses und diese main.ts. npx tsc findet keine Fehler. Welche neuen Dateien liegen danach im Ordner?
const greeting: string = "Hello"; console.log(greeting);Anwenden · Aufgabe 7 von 7
Kleine Aufgabe auf Ihrem Rechner (sie braucht Node.js und Internet). Legen Sie einen Ordner an, darin eine package.json mit {"type": "module"}, und führen Sie npm install -D typescript aus. Prüfen Sie npx tsc --version. Kopieren Sie die tsconfig.json des Kurses aus der letzten Lektion in den Ordner, schreiben Sie eine main.ts, die etwas ausgibt, und führen Sie npx tsc aus, dann node main.ts. Bauen Sie danach absichtlich einen Typfehler ein und starten Sie npx tsc erneut.
Prüfen Sie Ihr Ergebnis anhand dieser Liste
Selbst programmieren
Lesen Sie das ausgearbeitete Beispiel und lösen Sie dann die Übungen. Ihr Code läuft in Ihrem Browser oder auf Ihrem Computer und wird nie hochgeladen.
Ausgearbeitetes Beispiel
Ein Projekt aus zwei Dateien
main.ts importiert formatPrice aus format.ts, addiert drei Preise und gibt die Summe mit und ohne 19 % Steuer aus. Speichern Sie beide Dateien neben der tsconfig.json des Kurses und führen Sie npx tsc aus: Es prüft beide Dateien und gibt nichts aus. Dann node main.ts. Rufen Sie probeweise formatPrice(total) ohne Währung auf und starten Sie npx tsc erneut: Die Meldung nennt main.ts, wo der Aufruf steht.
main.ts
// main.ts imports a function from format.ts; npx tsc checks both files.
import {formatPrice} from "./format.ts";
const prices: number[] = [3.5, 4.25, 2];
let total = 0;
for (const price of prices) {
total += price;
}
console.log("items:", prices.length);
console.log("total:", formatPrice(total, "EUR"));
console.log("with 19% tax:", formatPrice(total * 1.19, "EUR"));
format.ts
export function formatPrice(amount: number, currency: string): string {
return amount.toFixed(2) + " " + currency;
}
Ausführen mit
npx tsc
node main.tsAusgabe
items: 3
total: 9.75 EUR
with 19% tax: 11.60 EUR- Der Import nennt die Datei mit Endung, ./format.ts, und genau diese Datei lädt node main.ts.
- export macht formatPrice für andere Dateien sichtbar; ohne export schlüge der Import fehl.
- tsc prüft den Aufruf in main.ts gegen die Parameter, die format.ts deklariert, über beide Dateien hinweg.
- npx tsc gibt für ein Projekt ohne Fehler nichts aus und schreibt mit der tsconfig des Kurses keine .js-Dateien.
Ändern und ausführen
Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser den TypeScript-Compiler herunter (bis zu 2.1 MB) und speichert ihn im Cache. Ihr Code bleibt auf Ihrem Gerät.
Übungen
Übung 1 von 2
Die Version lesen, die tsc ausgibt
npx tsc --version gibt Text wie Version 7.0.2 aus. majorVersion soll diesen Text nehmen und die Hauptversion als Zahl liefern: 7. Stattdessen liefert sie den Text "7", und tsc meldet das. Korrigieren Sie die return-Zeile, sodass sie eine Zahl liefert. Starten Sie die Tests: Der erste ist die Typprüfung.
Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser den TypeScript-Compiler herunter (bis zu 2.1 MB) und speichert ihn im Cache. Ihr Code bleibt auf Ihrem Gerät.
Hinweise
Hinweis 1
tsc meldet main.ts(3,3): error TS2322: Type 'string' is not assignable to type 'number'. Zeile 3 liefert Text.
Hinweis 2
split liefert ein Array aus Strings; version.split(".")[0] ist also der String "7".
Hinweis 3
Machen Sie den Text vor dem return zur Zahl: return Number(version.split(".")[0]);
Eine Lösung zeigen
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
export function majorVersion(output: string): number {
const version = output.replace("Version ", "");
return Number(version.split(".")[0]);
}
Auf dem eigenen Computer ausführen
Installieren Sie TypeScript 7.0 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.
main.ts
export function majorVersion(output: string): number {
const version = output.replace("Version ", "");
return version.split(".")[0];
}
main.test.ts
import {test} from 'node:test';
import assert from 'node:assert/strict';
import {majorVersion} from './main.ts';
test('Version 7.0.2 ergibt 7', () => {
assert.equal(majorVersion('Version 7.0.2'), 7, 'majorVersion("Version 7.0.2") sollte die Zahl 7 sein');
});
test('Version 6.0.3 ergibt 6', () => {
assert.equal(majorVersion('Version 6.0.3'), 6, 'majorVersion("Version 6.0.3") sollte die Zahl 6 sein');
});
test('Version 10.1.0 ergibt 10', () => {
assert.equal(majorVersion('Version 10.1.0'), 10, 'majorVersion("Version 10.1.0") sollte die Zahl 10 sein');
});
package.json
{
"type": "module"
}
tsconfig.json
{
"compilerOptions": {
"target": "esnext",
"module": "nodenext",
"lib": [
"esnext",
"dom"
],
"types": [],
"strict": true,
"noEmit": true,
"erasableSyntaxOnly": true,
"verbatimModuleSyntax": true,
"allowImportingTsExtensions": true
},
"include": [
"**/*.ts"
],
"exclude": [
"**/*.test.ts"
]
}
npx tsc braucht TypeScript im Ordner: Führen Sie dort einmal npm install --save-dev typescript aus. tsc prüft die Typen; Node.js führt main.ts aus, indem es sie entfernt.
Programm ausführen:
npx tsc
node main.tsPrüfungen ausführen (learnrun.js muss im selben Ordner liegen):
npx tsc
node --testlearnrun.js herunterladenÜbung 2 von 2
Eine Funktion aus einer anderen Datei aufrufen
format.ts (neben main.ts; lassen Sie sie, wie sie ist) exportiert formatPrice(amount: number, currency: string). main.ts soll Total: 9.75 EUR ausgeben, aber tsc meldet einen Fehler, und node main.ts bricht mit TypeError: amount.toFixed is not a function ab. Lesen Sie die Meldung und korrigieren Sie dann den Aufruf in main.ts.
Tab rückt ein, Umschalt+Tab rückt aus. Um den Editor mit der Tastatur zu verlassen, drücken Sie Esc und dann Tab.
Beim ersten Ausführen lädt Ihr Browser den TypeScript-Compiler herunter (bis zu 2.1 MB) und speichert ihn im Cache. Ihr Code bleibt auf Ihrem Gerät.
Hinweise
Hinweis 1
tsc meldet main.ts(8,35): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
Hinweis 2
total.toFixed(2) macht die Zahl bereits zu Text. formatPrice will die Zahl und ruft toFixed selbst auf.
Hinweis 3
Übergeben Sie total selbst: formatPrice(total, "EUR").
Eine Lösung zeigen
Ein möglicher Lösungsweg. Ihrer kann anders aussehen und trotzdem alle Prüfungen bestehen.
import {formatPrice} from "./format.ts";
const prices = [3.5, 4.25, 2];
let total = 0;
for (const price of prices) {
total += price;
}
console.log("Total:", formatPrice(total, "EUR"));
Auf dem eigenen Computer ausführen
Installieren Sie TypeScript 7.0 oder neuer. Speichern Sie diese Dateien in einem Ordner, öffnen Sie dort ein Terminal und führen Sie die Befehle unten aus.
main.ts
import {formatPrice} from "./format.ts";
const prices = [3.5, 4.25, 2];
let total = 0;
for (const price of prices) {
total += price;
}
console.log("Total:", formatPrice(total.toFixed(2), "EUR"));
main.test.ts
import {test} from 'node:test';
import assert from 'node:assert/strict';
import {runMain} from './learnrun.js';
test('das Programm gibt Total: 9.75 EUR aus', async () => {
const out = (await runMain()).trimEnd();
assert.equal(out, 'Total: 9.75 EUR', `das Programm gab ${JSON.stringify(out)} aus`);
});
format.ts
export function formatPrice(amount: number, currency: string): string {
return amount.toFixed(2) + " " + currency;
}
package.json
{
"type": "module"
}
tsconfig.json
{
"compilerOptions": {
"target": "esnext",
"module": "nodenext",
"lib": [
"esnext",
"dom"
],
"types": [],
"strict": true,
"noEmit": true,
"erasableSyntaxOnly": true,
"verbatimModuleSyntax": true,
"allowImportingTsExtensions": true
},
"include": [
"**/*.ts"
],
"exclude": [
"**/*.test.ts"
]
}
npx tsc braucht TypeScript im Ordner: Führen Sie dort einmal npm install --save-dev typescript aus. tsc prüft die Typen; Node.js führt main.ts aus, indem es sie entfernt.
Programm ausführen:
npx tsc
node main.tsPrüfungen ausführen (learnrun.js muss im selben Ordner liegen):
npx tsc
node --testlearnrun.js herunterladenHäufige Fehler
Ein Import ohne Dateiendung
import {formatPrice} from "./format";
console.log(formatPrice(9.75, "EUR"));
Was tsc oder Node.js ausgibt
main.ts(1,27): error TS2835: Relative import paths need explicit file extensions in ECMAScript imports when '--moduleResolution' is 'node16' or 'nodenext'. Did you mean './format.js'?Warum, und die Lösung
In einem ES-Modul lädt Node.js genau den Pfad, den Sie schreiben, und eine Datei namens format gibt es nicht. tsc schlägt ./format.js vor, den Namen, den die Datei nach dem Kompilieren zu JavaScript hätte. In diesem Kurs führt Node.js die .ts-Dateien selbst aus; schreiben Sie also "./format.ts", was die tsconfig des Kurses erlaubt. Mit ./format.js ist tsc zufrieden, aber node main.ts bricht ab, weil es keine format.js gibt.
Der Fehler steckt in der importierten Datei
import {formatPrice} from "./format.ts";
console.log(formatPrice(9.75, "eur"));
Was tsc oder Node.js ausgibt
format.ts(2,45): error TS2551: Property 'toUppercase' does not exist on type 'string'. Did you mean 'toUpperCase'?Warum, und die Lösung
npx tsc prüft jede Datei im Projekt; die Meldung kann also eine andere Datei als main.ts nennen. Lesen Sie zuerst den Dateinamen: Hier steckt der Tippfehler in format.ts, Zeile 2, Spalte 45. Korrigieren Sie ihn dort zu toUpperCase. main.ts stimmt und braucht keine Änderung.
Ein Argument vergessen
import {formatPrice} from "./format.ts";
console.log(formatPrice(9.75));
Was tsc oder Node.js ausgibt
main.ts(3,13): error TS2554: Expected 2 arguments, but got 1.Warum, und die Lösung
formatPrice deklariert zwei Parameter, amount und currency, und keiner ist optional; jeder Aufruf muss also beide übergeben. In reinem JavaScript läuft der Aufruf, und currency ist undefined: node main.ts gibt 9.75 undefined aus. tsc prüft jeden Aufruf gegen die Funktion, die in der anderen Datei deklariert ist. Übergeben Sie die Währung: formatPrice(9.75, "EUR").
TypeScript im Browser: der Compiler von TypeScript 6.0.3, Apache-2.0, danach die eigene Engine Ihres Browsers. Lizenz und Quellcode
Abschlussquiz
5 Fragen, ohne Hinweise. Ab 80 % ist die Lektion abgeschlossen.
Erledigen Sie zuerst alle Aufgaben oben, um das Abschlussquiz freizuschalten.