TypeScript Tutorial: Was sind Interfaces, Enums und Arrays?
โก Intelligente Zusammenfassung
TypeScript ist eine stark typisierte Obermenge von JavaSkript, das zu einfachem Code kompiliert wird JavaDieses Skript fรผgt Klassen, Schnittstellen, Aufzรคhlungen, Module und Namensrรคume hinzu. Der Artikel behandelt die Installation, Variablen, Typen, Arrays, Klassen, Zugriffsmodifizierer, Schnittstellen, Funktionen, Aufzรคhlungen, Module und Umgebungsdeklarationen.

Was ist TypeScript?
TypeScript ist eine Obermenge von JavaSkript. TypeScript ist eine objektorientierte Programmiersprache, die Klassen, Schnittstellen und mehr unterstรผtzt. Es handelt sich um eine Open-Source-Sprache, die von entwickelt wurde. Microsoft das den Code statisch kompiliert zu JavaSkript. Es lรคsst sich problemlos im Browser oder in Node.js ausfรผhren.
Alle neuesten Features fรผr ECMAScript werden unterstรผtzt in TypeScriptund auรerdem TypeScript verfรผgt รผber eigene objektorientierte Merkmale wie Schnittstellen, Umgebungsdeklarationen und Klassenvererbung, die bei der Entwicklung helfen.ping eine groรe Anwendung, die andernfalls schwer zu entwickeln wรคre JavaSkript.
Die Beziehung ist einseitig. Jede gรผltige JavaDie Skriptdatei ist bereits gรผltig. TypeScriptDas Umgekehrte ist jedoch nicht wahr, da Typannotationen nur in TypeScript und werden wรคhrend der Kompilierung gelรถscht.
Warum TypeScript?
Hier sind die wichtigsten Vorteile der Verwendung TypeScript:
- Groรe und komplexe Projekte in JavaSkripte sind schwierig zu codieren und zu warten.
- TypeScript Hilft sehr bei der Codeorganisation und beseitigt die meisten Fehler bereits wรคhrend der Kompilierung anstatt zur Laufzeit.
- TypeScript Unterstรผtzt JS-Bibliotheken und API-Dokumentation.
- Es handelt sich um eine optional typisierte Skriptsprache, sodass Typen schrittweise eingefรผhrt werden kรถnnen.
- TypeScript Code kann in einfachen Code umgewandelt werden JavaSkriptcode fรผr jedes Browserziel.
- Es ermรถglicht eine bessere Code-Strukturierung und objektorientierte Programmiertechniken.
- Es ermรถglicht eine bessere Unterstรผtzung der Entwicklungstools, einschlieรlich Autovervollstรคndigung und sicherem Refactoring.
- Sie kann die Sprache รผber den Standard hinaus erweitern, beispielsweise durch Funktionen wie Dekoratoren.
Der grรถรte praktische Vorteil liegt in der Unterstรผtzung durch den Editor. Da der Compiler die Struktur jedes Wertes kennt, kann ein Editor eine Eigenschaft im gesamten Projekt umbenennen und jede Stelle melden, an der die รbereinstimmung nicht mehr gegeben ist.
TypeScript Geschichte
Werfen wir einen Blick auf die wichtigsten Meilensteine โโder Geschichte von TypeScript:
- Nach zwei Jahren interner Entwicklung bei Microsoft, TypeScript Version 0.9 wurde 2013 verรถffentlicht.
- TypeScript Version 1.0 mit zusรคtzlicher Unterstรผtzung fรผr Generika wurde auf der Build 2014 verรถffentlicht.
- Im Juli 2014 eine neue TypeScript Ein neuer Compiler wurde eingefรผhrt, der fรผnfmal schneller war als die vorherige Version.
- Im Juli 2015 wurde die Unterstรผtzung fรผr ES6-Module, das Namespace-Schlรผsselwort, forโฆof und Dekoratoren hinzugefรผgt.
- Im November 2016 wurden zugeordnete Typen, Schlรผssel- und Nachschlagetypen sowie Objektrest und -verteilung hinzugefรผgt.
- Am 27. Mรคrz 2018 wurden bedingte Typen und ein verbesserter keyof-Wert mit Schnittmengentypen hinzugefรผgt.
- TypeScript Version 5.0, verรถffentlicht im Mรคrz 2023, modernisierte Dekoratoren und reduzierte die Verpackungsgrรถรe.
- TypeScript Version 6.0 erschien im Mรคrz 2026 als finale Version, die auf der vorherigen Version aufbaute. JavaSkript-Quellcodebasis.
- TypeScript Version 7.0 stellt den Compiler auf eine native Go-Implementierung um, welche Microsoft Berichten zufolge ist es etwa zehnmal schneller als 6.0.
Wer benutzt TypeScript?
TypeScript ist keine Nischenwahl mehr. Es bildet die Grundlage fรผr einige der am weitesten verbreiteten Frontend- und Backend-Tools, und die folgende Liste zeigt, wo ein Anfรคnger am ehesten damit in Berรผhrung kommt.
- Winkel: Das Angular-Framework ist geschrieben in TypeScriptEs wird erwartet, dass auch der Anwendungscode darin geschrieben wird.
- React- und Vue-Projekte: Beide รkosysteme versenden offizielle Schiffe TypeScript Vorlagen und die meisten modernen Starter-Systeme aktivieren diese Funktion standardmรครig.
- Node.js-Backends: Server-Frameworks wie NestJS basieren auf โฆ TypeScript Klassen und Dekorateure.
- Editorwerkzeuge: Visual Studio Code ist selbst ein groรes TypeScript Die Codebasis erklรคrt auch die umfassende Sprachunterstรผtzung.
- Frontends fรผr groรe Unternehmen: Teams, die mit vielen Mitwirkenden arbeiten, nutzen es, um Integrationsfehler vor der Bereitstellung zu erkennen.
Herunterladen und Installieren TypeScript
Hier ist die Schritt-fรผr-Schritt-Anleitung zum Herunterladen und Installieren TypeScript:
Schritt 1) โโLaden Sie Nodejs herunter und installieren Sie es
Besuchen Sie die offizielle Website von Node.js, https://nodejs.org/en/download/Laden Sie Node.js fรผr Ihr Betriebssystem herunter und installieren Sie es. Eine detaillierte Anleitung finden Sie im Leitfaden unter [Link einfรผgen]. Wie man Node.js herunterlรคdt und installiert.
Schritt 2) รberprรผfen Sie die Nodejs- und NPM-Version
Um zu รผberprรผfen, ob Node.js und npm installiert sind, prรผfen Sie die Version in Ihrer Eingabeaufforderung.
D:\typeproject>node --version v22.14.0 D:\typeproject>npm --version 10.9.2
Jede aktuelle Node LTS-Version funktioniert. TypeScript Fรผr die Ausfรผhrung des Compilers wird lediglich eine unterstรผtzte Node-Version benรถtigt.
Schritt 3) TypeScript Installation
Erstellen Sie Ihr Projektverzeichnis typeproject\ und fรผhren Sie npm init aus, wie im folgenden Befehl gezeigt:
npm init
Schritt 4) Starten Sie die Installation
Dadurch wird eine package.json-Datei erstellt, in der die Abhรคngigkeiten fรผr unser Projekt gespeichert werden.
Wenn Sie fertig sind, installieren Sie TypeScript wie folgt:
npm -g install typescript
Der obige Befehl รผbernimmt die Installation TypeScript. Durch Hinzufรผgen von โ-gโ zu npm install wird installiert TypeScript global. Der Vorteil der Verwendung von -g besteht darin, dass Sie die TypeScript tsc Der Befehl kann aus jedem Verzeichnis ausgefรผhrt werden, da es global installiert ist. Falls Sie es nicht installieren mรถchten TypeScript Verwenden Sie global den folgenden Befehl:
npm install --save-dev typescript
Erstellen Sie einen Ordner โsrc\โ in Ihrem Projektverzeichnis und erstellen Sie darin die folgenden Dateien: TypeScript Datei test.ts und schreiben Sie Ihren Code.
Beispiel: test.ts
function add(x:number, y:number) { return x+y; } let sum = add(5,10); console.log(sum);
Kompilieren TypeScript Code zu Javascript
Um den obigen Code zu kompilieren, verwenden Sie den folgenden Befehl.
If TypeScript ist global installiert. Verwenden Sie dazu den folgenden Befehl:
tsc test.ts
If TypeScript Wenn die Installation lokal in Ihrem Projekt erfolgt, mรผssen Sie den Pfad verwenden. TypeScript Aus node_modules, wie gezeigt, oder fรผhren Sie es รผber npx aus:
node_modules\typescript\bin\tsc test.ts OR npx tsc test.ts
Der obige Befehl erstellt eine test.js-Datei, in der der Code kompiliert wird. JavaSkript.
Beispiel: test.js
function add(x, y) { return x + y; } var sum = add(5, 10); console.log(sum);
Ausfรผhren Javascript mit Nodejs
Nun fรผhren wir test.js in Node.js wie folgt aus:
D:\typeproject\src>node test.js 15
Der an console.log รผbergebene Wert wird angezeigt, wenn test.js ausgefรผhrt wird.
Ausfรผhren JavaSkript im Browser
Ejemplo:
<html> <head></head> <body> <script type="text/javascript" src="test.js"></script> </body> </html>
Kompilieren TypeScript Code zu Javascript mit EcmaScript-Version
TypeScript Es unterstรผtzt alle verรถffentlichten ECMAScript-Funktionen, die Entwickler beim Programmieren nutzen kรถnnen. Allerdings werden nicht alle neuen Funktionen von รคlteren Browsern unterstรผtzt, sodass Sie mรถglicherweise in eine รคltere ECMAScript-Version kompilieren mรผssen. TypeScript bietet Compileroptionen, die genau das tun.
Beispiel: test.ts
var addnumbers = (a, b) => {
return a+b;
}
addnumbers(10, 20);
Um die ES-Version Ihrer Wahl zu kompilieren, kรถnnen Sie die Option โtargetโ oder โtโ in Ihrem Befehl wie folgt verwenden:
tsc --target ES6 test.ts OR tsc -t ES6 test.ts
Standardmรครig ist ES3 als Zielsprache fรผr den klassischen Compiler eingestellt. Falls Sie dies รคndern mรถchten, kรถnnen Sie den oben genannten Befehl verwenden.
Aktuell verwenden wir ES6 als Zielplattform:
tsc --target ES6 test.ts
test.ts zu test.js
var addnumbers = (a, b) => {
return a+b;
}
addnumbers(10, 20);
Der Code bleibt unverรคndert, da die von Ihnen verwendete Pfeilfunktion ein ES6-Feature ist und sich auch nach der Kompilierung zu ES6 nicht รคndert.
Standardmรครig ist das Ziel ES3, daher erhรคlt man ohne Angabe eines Ziels test.js wie folgt:
var addnumbers = function (a, b) {
return a + b;
};
addnumbers(10, 20);
Hier wird also der fette Pfeil in eine normale anonyme Funktion umgewandelt.
๐ก Tipp: Anstatt die Optionen jedes Mal in der Befehlszeile anzugeben, fรผhren Sie Folgendes aus: tsc --init um eine tsconfig.json-Datei zu generieren. Der Compiler liest dann die Einstellungen target, outDir und strict fรผr das gesamte Projekt aus dieser Datei.
Variablen in TypeScript
Variablen werden zum Speichern von Werten verwendet und der Wert kann eine Zeichenfolge, eine Zahl, ein Boolean-Wert oder ein Ausdruck sein. Wenn es um Variablen in TypeScript, sie รคhneln JavaSkriptLernen wir also, Variablen zu deklarieren und ihnen Werte zuzuweisen. TypeScript.
Variablen kรถnnen im Code nicht verwendet werden, ohne definiert zu sein. Um eine Variable zu deklarieren, kรถnnen Sie Folgendes verwenden:
jung Stichwort,
lassen Stichwort
const Stichwort
Arbeiten mit Variablen in TypeScript รคhnelt JavaSkript und Benutzer, die mit JavaDas Skript wird es sehr leicht finden. In modernem Code, lassen und const werden bevorzugt jung, weil ihr Blockbereich eine ganze Klasse von Fehlern verhindert.
Variablen mit var deklarieren
Syntax:
var firstname = "Roy";
Werfen wir einen Blick auf einige davon. TypeScript Beispiele zum Verstรคndnis der Funktionsweise des Schlรผsselworts `var` und des Gรผltigkeitsbereichs von Variablen, die mit diesem Schlรผsselwort deklariert werden. jung Stichwort.
Beispiel 1:
var k = 1; // variable k will have a global scope function test() { var c = 1; // variable c is local and accessible only inside function test return k++; } test(); // output as 1 test(); // output as 2 alert(c); // will throw error, Uncaught ReferenceError: c is not defined
Beispiel 2:
var t = 0; // variable t is declared in global scope function test() { var t = 10; // t is redeclared inside the function, so changes stay local return t; } test(); // will return 10 console.log(t); // will console 0
Beispiel 3:
var i = 0; function test() { if (i > 0) { var t = 1; } return t; } test(); // returns undefined. The if block did not run, yet t is still declared // because var declarations are hoisted to the whole function. i++; // value of i is incremented test(); // since i > 0 the if block runs and the value returned is 1
Variablen mit let deklarieren
Das TypeScript Die Syntax fรผr let ist wie folgt:
Syntax:
let name = "Roy";
Die Arbeit der lassen Die Variable ist nahezu identisch mit jungAllerdings mit einem wichtigen Unterschied, den das folgende Beispiel verdeutlicht.
Ejemplo:
let i = 1; function test() { if (i > 0) { let t = 1; } return t; } test(); // throws an error: Cannot find name 't'
Die obige TypeScript Das Beispiel wirft einen Fehler, aber derselbe Code hรคtte mit dem jung Schlรผsselwort. Variablen, die mit dem Schlรผsselwort deklariert wurden. lassen sind nur innerhalb des Blocks verfรผgbar, in dem sie deklariert sind. In diesem Beispiel existiert t nur innerhalb des if-Blocks, nicht in der gesamten Funktion.
Dasselbe gilt innerhalb jeder Funktion, for-Schleife, while-Schleife oder switch-Block. Eine let-Variable ist nur innerhalb dieses Blocks verfรผgbar; der Zugriff darauf auรerhalb fรผhrt zu einem Fehler. Dies ist der Hauptunterschied zwischen var und let.
Variablen mit const deklarieren
โConstโ bedeutet Konstante. Sie รคhneln โletโ-Variablen, mit dem Unterschied, dass ein einmal zugewiesener Wert nicht mehr geรคndert werden kann. Eine โconstโ-Deklaration muss daher in derselben Zeile initialisiert werden.
Syntax:
const name = "Roy";
Ejemplo:
const age = "25"; age = "30"; // error: Cannot assign to 'age' because it is a constant const total; // error: 'const' declarations must be initialized
Verwenden Sie also `const` immer dann, wenn Sie sicher sind, dass der zugewiesene Wert nicht neu zugewiesen wird. Beachten Sie, dass `const` die Neuzuweisung der Bindung verhindert, nicht aber die รnderung des Objekts, auf das es verweist.
Typen in TypeScript
TypeScript ist eine stark typisierte Sprache, wรคhrend JavaDas Skript ist es nicht. Eine Variable, deren Wert als Zeichenkette definiert ist, kann problemlos in eine Zahl geรคndert werden. JavaDasselbe wird im Drehbuch nicht toleriert. TypeScript. in TypeScriptDer Datentyp einer Variablen wird zu Beginn definiert und muss wรคhrend der gesamten Ausfรผhrung beibehalten werden. Jede รnderung fรผhrt zu einem Kompilierfehler. JavaSkript.
Folgende Grundtypen gibt es:
| Typ | Akzeptiert | Beispieldeklaration |
|---|---|---|
| Anzahl | Ganze Zahlen, Gleitkommazahlen und Brรผche | sei a: Zahl = 10; |
| Schnur | Nur Textwerte | let s: string = โhelloโ; |
| boolean | nur wahr oder falsch | let b: boolean = true; |
| fรผr | Beliebiger Wert, keine Prรผfung. | sei x: beliebig = 123; |
| ungรผltig | Fehlen eines Rรผckgabewerts | Funktion f(): void {} |
Nummer
Akzeptiert nur ganze Zahlen, Gleitkommazahlen, Brรผche und รคhnliche numerische Werte.
Syntax:
let a :number = 10; let marks :number = 150; let price :number = 10.2;
Hier sind einige wichtige Methoden, die auf Zahlentypen angewendet werden kรถnnen:
toFixed() โ Es wandelt die Zahl in eine Zeichenkette um und behรคlt die der Methode รผbergebenen Dezimalstellen bei.
toString () โ Diese Methode wandelt die Zahl in eine Zeichenkette um.
Wert von() โ Diese Methode gibt den Grundwert der Zahl zurรผck.
toPrecision() โ Diese Methode formatiert die Zahl auf eine angegebene Lรคnge.
Beispiel: mit allen Zahlenmethoden
let _num :number = 10.345; _num.toFixed(2); // "10.35" _num.valueOf(); // 10.345 _num.toString(); // "10.345" _num.toPrecision(2); // "10"
Schnur
Zeichenkette: Nur Zeichenkettenwerte.
Syntax:
let str :string = "hello world";
Hier sind einige wichtige Methoden, die auf Zeichenketten angewendet werden kรถnnen:
- gespalten() โ Diese Methode teilt die Zeichenkette in ein Array auf.
- charat() โ Diese Methode liefert das Zeichen am angegebenen Index.
- Index von() โ Diese Methode gibt die Position des ersten Vorkommens des ihr รผbergebenen Wertes an.
- ersetzen() โ Diese Methode benรถtigt zwei Zeichenketten. Sie sucht nach dem ersten Wert in der Zeichenkette und ersetzt ihn, falls vorhanden, durch den zweiten Wert, wodurch eine neue Zeichenkette zurรผckgegeben wird.
- trimmen() โ Diese Methode entfernt Leerzeichen von beiden Seiten der Zeichenkette.
- substr() โ Diese Methode gibt einen Teil der Zeichenkette zurรผck, abhรคngig von der Startposition und der angegebenen Lรคnge.
- Teilzeichenfolge() โ Diese Methode gibt einen Teil der Zeichenkette zurรผck, abhรคngig von der Start- und Endposition. Das Zeichen an der Endposition wird ausgeschlossen.
- zuGroรbuchstaben() โ wandelt die Zeichenkette in Groรbuchstaben um.
- toLowerCase() โ wandelt die Zeichenfolge in Kleinbuchstaben um.
Ejemplo:
let _str:string = "Typescript"; _str.charAt(1); // y _str.split(""); // ["T","y","p","e","s","c","r","i","p","t"] _str.indexOf("s"); // 4, gives -1 if the value does not exist _str.replace("Type", "Coffee"); // "Coffeescript" _str.trim(); // "Typescript" _str.substr(4, _str.length); // "script" _str.substring(4, 10); // "script" _str.toUpperCase(); // "TYPESCRIPT" _str.toLowerCase(); // "typescript"
Boolean
Ein boolescher Wert akzeptiert nur die logischen Werte โtrueโ und โfalseโ. Im Gegensatz zu einfachen Datentypen JavaIm Skript werden die Zahlen 0 und 1 nicht akzeptiert, da sie vom Typ Zahl sind.
Syntax:
let status :boolean = true; let isDone :boolean = false; let bflag :boolean = 1; // error: Type 'number' is not assignable to type 'boolean'
Jedes
Syntax:
let a :any = 123 a = "hello world"; // changing type will not give any error.
Variablen, die mit dem fรผr Der Typ kann eine Zeichenkette, eine Zahl, ein Array, einen booleschen Wert oder einen leeren Wert enthalten. TypeScript wird keinen Kompilierfehler auslรถsen, was Variablen in JavaSkript. Verwenden Sie den Typ "any" nur dann, wenn Sie sich รผber den Typ des Wertes, der dieser Variablen zugeordnet wird, nicht sicher sind, da dadurch jede รberprรผfung dieses Wertes deaktiviert wird.
Leere
Der Typ Void wird meist als Rรผckgabetyp einer Funktion verwendet, die nichts zurรผckgibt.
Syntax:
function testfunc():void{
//code here
}
TypeScript Feld
An Feld in TypeScript ist ein Datentyp, in dem mehrere Werte gespeichert werden kรถnnen. Lernen wir, wie man Arrays deklariert und ihnen Werte fรผr Operationen zuweist. TypeScript.
Da TypeScript Da es sich um eine statisch typisierte Sprache handelt, muss der Datentyp der Werte in einem Array angegeben werden. Andernfalls werden sie als vom Typ โanyโ behandelt.
Deklarieren und initialisieren Sie ein Array
Syntax:
let nameofthearray : Array<typehere>
Beispiel
let months: Array<string> = ["Jan", "Feb", "March", "April", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec"]; // array with all string values let years: Array<number> = [2015, 2016, 2017, 2018, 2019]; // array with all numbers let month_year: Array<string | number> = ["Jan", 2015, "Feb", 2016]; // mixed let alltypes: Array<any> = [true, false, "Harry", 2000, { "a": "50", "b": "20" }]; // any type
Verschiedene Mรถglichkeiten, auf Elemente aus einem Array zuzugreifen
Um die Elemente eines Arrays zu erhalten, beginnen die Werte bei Index 0 und enden bei der Lรคnge des Arrays minus eins.
let years: Array<number> = [2016, 2017, 2018, 2019]; years[0]; // output will be 2016 years[1]; // output will be 2017 years[2]; // output will be 2018 years[3]; // output will be 2019
Sie kรถnnen die Elemente eines Arrays auch mithilfe eines Arrays abrufen. TypeScript fรผr Schleife, Wie nachfolgend dargestellt.
Die Verwendung von TypeScript for-Schleife
let years: Array<number> = [2016, 2017, 2018, 2019]; for (let i = 0; i < years.length; i++) { console.log(years[i]); }
Ausgang:
2016 2017 2018 2019
โ ๏ธ Warnung: Die Schleifenbedingung muss lauten: i < years.length. Schreiben i <= years.length Fรผhrt eine zusรคtzliche Iteration durch und gibt aus undefinedweil der letzte gรผltige Index immer die Lรคnge minus eins ist.
For-In-Schleife verwenden
let years: Array<number> = [2016, 2017, 2018, 2019]; for (let i in years) { console.log(years[i]); }
Ausgang:
2016 2017 2018 2019
Verwendung einer for-of-Schleife
let years: Array<number> = [2016, 2017, 2018, 2019]; for (let i of years) { console.log(i); }
Ausgang:
2016 2017 2018 2019
Verwendung der forEach-Schleife
let years: Array<number> = [2016, 2017, 2018, 2019]; years.forEach(function(yrs, i) { console.log(yrs); });
Ausgang:
2016 2017 2018 2019
TypeScript Array-Methoden
Das TypeScript Das Array-Objekt verfรผgt รผber zahlreiche Eigenschaften und Methoden, die Entwicklern die einfache und effiziente Arbeit mit Arrays ermรถglichen. Den Wert einer Eigenschaft erhalten Sie mit `arrayname.property`, die Ausgabe einer Methode mit `arrayname.method()`.
| Member | Zweck | Rรผcksendungen |
|---|---|---|
| Lรคnge | Anzahl der Elemente im Array | Anzahl |
| umkehren() | Reversedie Reihenfolge der Gegenstรคnde | Das gleiche Array |
| Sortieren() | Sortiert die Gegenstรคnde an ihrem Platz | Das gleiche Array |
| Pop() | Entfernt den letzten Eintrag | Der entfernte Gegenstand |
| Verschiebung() | Entfernt das erste Element | Der entfernte Gegenstand |
| drรผcken() | Fรผgt einen Wert als letztes Element hinzu. | Die neue Lรคnge |
| concat() | Verbindet zwei Arrays zu einem | Ein neues Array |
Beispiel fรผr die Lรคngeneigenschaft
let months: Array<string> = ["Jan", "Feb", "March", "April", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec"]; console.log(months.length); // 12
Beispiel fรผr die umgekehrte Methode
console.log(months.reverse()); // ["Dec","Nov","Oct","Sept","Aug","July","June","May","April","March","Feb","Jan"]
Beispiel fรผr Sortiermethode
console.log(months.sort()); // ["April","Aug","Dec","Feb","Jan","July","June","March","May","Nov","Oct","Sept"]
Beispiel fรผr die Pop-Methode
console.log(months.pop()); // Dec
Beispiel fรผr die Shift-Methode
console.log(months.shift()); // Jan
Beispiel fรผr Push-Methode
let years: Array<number> = [2015, 2016, 2017, 2018, 2019]; console.log(years.push(2020)); // 6, the new length years.forEach(function(yrs, i) { console.log(yrs); // 2015, 2016, 2017, 2018, 2019, 2020 });
Beispiel fรผr die Concat-Methode
let array1: Array<number> = [10, 20, 30]; let array2: Array<number> = [100, 200, 300]; console.log(array1.concat(array2)); // [10, 20, 30, 100, 200, 300]
Klasse in TypeScript
TypeScript ist eine Obermenge von JavaSkript, also alles, was mรถglich ist in JavaScript ist auch mรถglich in TypeScriptDie Klasse ist ein Feature, das ab ES6 hinzugefรผgt wurde. JavaSkript- und klassenรคhnliche Funktionalitรคt wurde durch die Verwendung einer Funktion mit Prototypmethoden zur Code-Wiederverwendung erreicht. Durch die Verwendung von Klassen kann Ihr Code Sprachen wie beispielsweise โฆ รคhneln. Java, C# und Python, wo Code leicht wiederverwendet werden kann.
Definieren einer Klasse in TypeScript
Hier ist die grundlegende Klassensyntax in TypeScript:
class nameofclass {
//define your properties here
constructor() {
// initialize your properties here
}
//define methods for class
}
Beispiel: Ein funktionierendes Beispiel fรผr Class
class Students { age : number; name : string; roll_no : number; constructor(age: number, name:string, roll_no: number) { this.age = age; this.name = name; this.roll_no = roll_no; } getRollNo(): number { return this.roll_no; } getName() : string { return this.name; } getAge() : number { return this.age; } }
Im obigen Beispiel haben Sie eine Klasse namens Students. Sie hat die Eigenschaften age, name und roll_no.
Konstrukteur in einem TypeScript Klasse
Die oben definierte Klasse Students hat einen Konstruktor, wie unten dargestellt:
constructor(age: number, name:string, roll_no: number) {
this.age = age;
this.name = name;
this.roll_no = roll_no;
}
Die Konstruktormethode hat die Parameter Alter, Name und Matrikelnummer. Der Konstruktor initialisiert die Eigenschaften bei der Instanziierung der Klasse. Auf die Eigenschaften wird รผber die Methode zugegriffen. fehlen uns die Worte. Schlรผsselwรถrter, zum Beispiel `this.age` fรผr den Zugriff auf das Alter und `this.roll_no` fรผr den Zugriff auf die Rollennummer. Sie kรถnnen auch einen Standardkonstruktor verwenden, wie unten gezeigt:
constructor () {}
Methoden innerhalb eines TypeScript Klasse
In der Klasse Students sind Methoden definiert, zum Beispiel getRollNo(), getName() und getAge(), die die Werte der Eigenschaften roll_no, name und age zurรผckgeben.
getRollNo(): number {
return this.roll_no;
}
getName() : string {
return this.name;
}
getAge() : number {
return this.age;
}
Erstellen einer Instanz einer Klasse in TypeScript
In TypeScriptUm eine Instanz einer Klasse zu erstellen, verwendet man den Operator `new`. Wenn Sie mit `new` eine Instanz erstellen, erhalten Sie ein Objekt, das auf die Eigenschaften und Methoden der Klasse zugreifen kann, wie unten gezeigt:
let student_details = new Students(15, "Harry John", 33); student_details.getAge(); // 15 student_details.getName(); // Harry John
Zusammenstellen eines TypeScript Klasse bis JavaSkript
Sie kรถnnen den unten gezeigten tsc-Befehl verwenden, um zu kompilieren. JavaSkript.
Command: tsc Students.ts
Die Ausgabe der JavaDer Skriptcode nach der Kompilierung sieht wie folgt aus:
var Students = /** @class */ (function () {
function Students(age, name, roll_no) {
this.age = age;
this.name = name;
this.roll_no = roll_no;
}
Students.prototype.getRollNo = function () {
return this.roll_no;
};
Students.prototype.getName = function () {
return this.name;
};
Students.prototype.getAge = function () {
return this.age;
};
return Students;
}());
In JavaIm Skript wird die Klasse in eine selbstaufrufende Funktion umgewandelt.
Klassenvererbung
Klassen kรถnnen mit vererbt werden erweitert Schlรผsselwort in TypeScript.
Syntax der Klassenvererbung:
class A {
//define your properties here
constructor() {
// initialize your properties here
}
//define methods for class
}
class B extends A {
//define your properties here
constructor() {
// initialize your properties here
}
//define methods for class
}
Klasse B wird teilen kรถnnen Klasse A Methoden und Eigenschaften.
Hier ist ein funktionierendes Beispiel einer Klasse, die Vererbung verwendet:
class Person { name: string; age: number; constructor(name: string, age: number) { this.name = name; this.age = age; } getName(): string { return this.name; } getAge(): number { return this.age; } } class Student extends Person { tmarks: number; getMarks(): number { return this.tmarks; } setMarks(tmarks) { this.tmarks = tmarks; } } let _std1 = new Student('Sheena', 24); _std1.getAge(); // output is 24 _std1.setMarks(500); _std1.getMarks(); // output is 500
Sie haben zwei Klassen, Person und Student. Student erweitert Person, und das von Student erstellte Objekt kann sowohl auf seine eigenen Methoden und Eigenschaften als auch auf die der Klasse, von der es erweitert wird, zugreifen.
Nun fรผgen wir der obigen Klasse einige รnderungen hinzu.
Ejemplo:
class Person { name: string; age: number; constructor(name: string, age: number) { this.name = name; this.age = age; } getName(): string { return this.name; } getAge(): number { return this.age; } } class Student extends Person { tmarks: number; constructor(name: string, age: number, tmarks: number) { super(name, age); this.tmarks = tmarks; // the derived property must be assigned too } getMarks(): number { return this.tmarks; } setMarks(tmarks) { this.tmarks = tmarks; } } let _std1 = new Student('Sheena', 24, 500); _std1.getAge(); // output is 24 _std1.getMarks(); // output is 500
Die รnderung gegenรผber dem vorherigen Beispiel besteht in einem in der Klasse Student definierten Konstruktor. Dieser Konstruktor akzeptiert dieselben Parameter wie die Basisklasse sowie gegebenenfalls eigene zusรคtzliche Parameter.
In TypeScript Sie mรผssen `super` mit allen Parametern der Basisklasse aufrufen. Dies muss die erste Anweisung im Konstruktor sein, da `super` den Konstruktor der abgeleiteten Klasse ausfรผhrt. Jede von der abgeleiteten Klasse deklarierte Eigenschaft, wie z. B. `tmarks`, muss anschlieรend explizit zugewiesen werden, da `getMarks` sonst `undefined` zurรผckgibt.
Zugriffsmodifikatoren in TypeScript
TypeScript Unterstรผtzt die Zugriffsmodifizierer public, private und protected fรผr Ihre Methoden und Eigenschaften. Standardmรครig gilt die Methode oder Eigenschaft als รถffentlich, wenn kein Zugriffsmodifizierer angegeben ist, und ist somit vom Objekt der Klasse aus leicht zugรคnglich.
Bei privaten Zugriffsmodifizierern sind die Member nicht fรผr das Objekt der Klasse verfรผgbar und dรผrfen nur innerhalb der Klasse verwendet werden. Sie stehen einer abgeleiteten Klasse nicht zur Verfรผgung.
Bei geschรผtzten Zugriffsmodifikatoren sind die Member nur innerhalb der Klasse und der abgeleiteten Klasse nutzbar und nicht vom Objekt der Klasse aus zugรคnglich.
Ejemplo:
class Person { protected name: string; protected age: number; constructor(name: string, age: number) { this.name = name; this.age = age; } private getName(): string { return this.name; } getDetails(): string { return "Name is " + this.getName(); } } class Student extends Person { tmarks: number; constructor(name: string, age: number, tmarks: number) { super(name, age); this.tmarks = tmarks; } getMarks(): number { return this.tmarks; } getFullName(): string { return this.name; } setMarks(tmarks) { this.tmarks = tmarks; } } let _std1 = new Student('Sheena', 24, 500); _std1.getMarks(); // output is 500 _std1.getFullName(); // output is Sheena _std1.getDetails(); // output is Name is Sheena
| Verรคnderung | Selbe Klasse | Abgeleitete Klasse | Objekt der Klasse |
|---|---|---|---|
| รffentlichkeit | Ja | Ja | Ja |
| geschรผtzt | Ja | Ja | Nein |
| privat | Ja | Nein | Nein |
Schnittstelle in TypeScript
Eine der Kernfunktionen von TypeScript Schnittstellen sind ein Regelwerk, das von der Entitรคt, die sie implementiert, befolgt werden muss. Die Entitรคt kann eine Klasse, Funktion oder Variable sein. Eine Schnittstelle besteht aus Eigenschaften und Methoden. Eigenschaften und Methoden kรถnnen mit der Syntax โ?โ als optional gekennzeichnet werden. Die Schnittstelle fรผhrt zu einer strengen Typรผberprรผfung fรผr alle Funktionen, Variablen und Klassen, die sie implementieren.
Syntax einer Schnittstelle in TypeScript
interface Dimension {
width: string;
height: string;
}
Sie haben eine Schnittstelle namens Dimension definiert, die die Eigenschaften Breite und Hรถhe besitzt, die beide vom Typ String sind.
Dieses Interface kann nun durch eine Variable, eine Funktion oder eine Klasse implementiert werden. Hier ist ein Beispiel fรผr eine Variable, die das Interface Dimension implementiert.
Ejemplo:
interface Dimension { width: string; height: string; } let _imagedim: Dimension = { width: "100px", height: "200px" };
Die Signatur der Schnittstelle Dimension enthรคlt Breite und Hรถhe, die beide obligatorisch sind. Fehlt eine Eigenschaft oder wird ein Typ geรคndert, fรผhrt dies zu einem Kompilierfehler. JavaSkript.
Der obige Code, wenn kompiliert zu JavaDas Skript sieht wie folgt aus:
var _imagedim = {
width: "100px",
height: "200px"
};
Sehen wir uns nun an, wie man eine Schnittstelle mit einer Funktion verwendet.
Verwendung einer Schnittstelle als Rรผckgabetyp einer Funktion
interface Dimension { width: string; height: string; } function getDimension() : Dimension { let width = "300px"; let height = "250px"; return { width: width, height: height } }
Im obigen Beispiel wird das Interface Dimension als Rรผckgabetyp der Funktion getDimension() verwendet. Der Rรผckgabewert muss den im Interface deklarierten Eigenschaften und Typen entsprechen.
Die zusammengestellt JavaDer Skriptcode lautet wie folgt:
function getDimension() {
var width = "300px";
var height = "250px";
return {
width: width,
height: height
};
}
Wenn der Rรผckgabetyp wรคhrend der Kompilierung nicht mit der Schnittstelle รผbereinstimmt, wird ein Fehler ausgelรถst.
Schnittstelle als Funktionsparameter
interface Dimension { width: string; height: string; } function getDimension(dim: Dimension) : string { let finaldim = dim.width + "-" + dim.height; return finaldim; } getDimension({width:"300px", height:"250px"}); // "300px-250px"
Im obigen Beispiel haben Sie das Interface `Dimension` als Parameter fรผr die Funktion `getDimension()` verwendet. Beim Aufruf der Funktion muss der รผbergebene Parameter den vom Interface definierten Regeln entsprechen.
Die zusammengestellt JavaDer Skriptcode lautet wie folgt:
function getDimension(dim) {
var finaldim = dim.width + "-" + dim.height;
return finaldim;
}
getDimension({ width: "300px", height: "250px" });
Klasse, die eine Schnittstelle implementiert
Um eine Schnittstelle mit einer Klasse zu nutzen, mรผssen Sie das Schlรผsselwort verwenden. implementiert.
Syntax fรผr eine Klasse, die ein Interface implementiert:
class NameofClass implements InterfaceName {
}
Das folgende Beispiel zeigt eine Schnittstelle, die mit einer Klasse interagiert.
interface Dimension { width : string, height: string, getWidth(): string; } class Shapes implements Dimension { width: string; height: string; constructor (width:string, height:string) { this.width = width; this.height = height; } getWidth() { return this.width; } }
Im obigen Beispiel haben Sie das Interface Dimension mit den Eigenschaften width und height, beide vom Typ string, und einer Methode namens getWidth() definiert, die einen String zurรผckgibt.
Die zusammengestellt JavaDer Skriptcode lautet wie folgt:
var Shapes = /** @class */ (function () {
function Shapes(width, height) {
this.width = width;
this.height = height;
}
Shapes.prototype.getWidth = function () {
return this.width;
};
return Shapes;
}());
Funktionen in TypeScript
Funktionen sind Abfolgen von Anweisungen, die zur Ausfรผhrung einer Aufgabe ausgefรผhrt werden. JavaIm Skript ist der grรถรte Teil des Codes in Form von Funktionen geschrieben, und diese spielen eine wichtige Rolle. TypeScript Es stehen zwar Klassen, Schnittstellen, Module und Namensrรคume zur Verfรผgung, aber Funktionen spielen weiterhin eine wichtige Rolle. Der Unterschied zwischen einer Funktion in JavaDrehbuch und TypeScript sind die Parameter- und Rรผckgabetypen, die mit einem verfรผgbar sind TypeScript Funktion.
JavaSkriptfunktion:
function add (a1, b1) {
return a1+b1;
}
TypeScript Funktion:
function add(a1 : number, b1: number) : number { return a1 + b1; }
In der obigen Funktion lautet der Name der Funktion โaddโ, die Parameter sind a1 und b1Beide Parameter sind vom Typ Zahl, und auch der Rรผckgabetyp ist eine Zahl. Wenn Sie der Funktion einen String รผbergeben, wird beim Kompilieren ein Kompilierfehler ausgelรถst. JavaSkript.
Aufruf der Funktion: add
let x = add(5, 10); // will return 15 let b = add(5); // error TS2554: Expected 2 arguments, but got 1 let c = add(3,4,5); // error TS2554: Expected 2 arguments, but got 3 let t = add("Harry", "John"); // error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'
Die Parameter a1 und b1 Diese Angaben sind obligatorisch und fรผhren zu einem Fehler, wenn sie fehlen. Parametertypen und Rรผckgabetyp sind gleichermaรen wichtig und kรถnnen nach ihrer Definition nicht mehr geรคndert werden.
Optionale Parameter fรผr eine Funktion
In JavaIm Skript sind alle Funktionsparameter optional und gelten als undefiniert, wenn sie nicht รผbergeben werden. Dasselbe gilt nicht in TypeScriptSobald Sie die Parameter definiert haben, mรผssen Sie diese angeben. Wenn ein Parameter optional sein soll, fรผgen Sie ein Fragezeichen hinter dem Parameternamen hinzu, wie unten gezeigt:
function getName(firstname: string, lastname?: string): string { return firstname + lastname; } let a = getName("John"); // returns Johnundefined let b = getName("John", "Harry"); // returns JohnHarry let c = getName("John", "H", "Harry"); // error TS2554: Expected 1-2 arguments, but got 3
Bitte beachten Sie, dass optionale Parameter zuletzt definiert werden mรผssen. Es ist nicht mรถglich, den ersten Parameter optional und den zweiten obligatorisch zu definieren, da der Compiler sonst nicht weiร, welcher Wert angegeben wurde.
Weisen Sie den Parametern Standardwerte zu
Sie kรถnnen den Parametern Standardwerte zuweisen, wie unten dargestellt:
function getName(firstname: string, lastname = "Harry"): string { return firstname + lastname; } let a = getName("John"); // will return JohnHarry let b = getName("John", "H"); // will return JohnH
รhnlich wie optionale Parameter mรผssen auch standardmรครig initialisierte Parameter am Ende der Parameterliste stehen.
Ruheparameter
Sie haben gesehen, wie TypeScript Es werden obligatorische, optionale und Standardwertparameter behandelt. Nun betrachten wir die Restparameter. Restparameter sind eine Gruppe optionaler Parameter, die gemeinsam definiert werden, mithilfe von drei Parametern. Punkte (โฆ) gefolgt vom Namen des Parameters, der ein Array ist.
Syntax fรผr Rest-Parameter:
function testFunc(a: string, ...arr: string[]) :string { return a + arr.join(""); }
Wie oben gezeigt, ist der Restparameter ein Array, dem drei Punkte vorangestellt sind. Das Array enthรคlt alle รผbrigen Argumente, die an die Funktion รผbergeben werden.
Ejemplo:
let a = testFunc("Monday", "Tuesday", "Wednesday", "Thursday"); // output is MondayTuesdayWednesdayThursday
Pfeilfunktionen
Eine Pfeilfunktion ist eine der wichtigen Funktionen, die in ES6 verรถffentlicht wurden, und ist verfรผgbar in TypeScript Auch. Die Syntax enthรคlt einen dicken Pfeil, daher der Name.
Syntax der Pfeilfunktion:
var nameoffunction = (params) => {
// code here
}
Wozu dient eine Pfeilfunktion?
Um den Anwendungsfall einer Pfeilfunktion zu verstehen, betrachten wir ein Beispiel.
Ejemplo:
var ScoreCard = function () { this.score = 0; this.getScore = function () { setTimeout(function () { console.log(this.score); // gives undefined }, 1000); } } var a = new ScoreCard(); a.getScore();
Sie haben eine Funktion mit einer Eigenschaft `score` erstellt, die mit 0 initialisiert ist, und eine Methode `getScore`, die intern `setTimeout` verwendet und nach einer Sekunde `this.score` protokolliert. Der protokollierte Wert ist `undefined`, obwohl `this.score` definiert und initialisiert ist. Das Problem liegt in der fehlen uns die Worte. Das Schlรผsselwort. Die Funktion innerhalb von setTimeout hat ihr eigenes this, und da score darin nicht definiert ist, ist das Ergebnis undefiniert.
Dasselbe lรคsst sich mit einer Pfeilfunktion realisieren, wie unten gezeigt:
var ScoreCard = function () { this.score = 0; this.getScore = function () { setTimeout(() => { console.log(this.score); // you get 0 }, 1000); } } var a = new ScoreCard(); a.getScore();
Eine Pfeilfunktion hat keine eigene fehlen uns die Worte.Stattdessen wird die Variable aus dem รผbergeordneten Gรผltigkeitsbereich verwendet, sodass auรerhalb deklarierte Variablen innerhalb einer Pfeilfunktion mit `this` zugรคnglich sind. Pfeilfunktionen sind aufgrund ihrer kรผrzeren Syntax sowie fรผr Rรผckruffunktionen, Ereignisbehandler und Timing-Funktionen nรผtzlich.
TypeScript Enums
A TypeScript Ein Enum ist ein Objekt, das eine Sammlung zusammengehรถriger Werte enthรคlt, die gemeinsam gespeichert sind. JavaScript unterstรผtzt Enums nicht nativ. Die meisten Programmiersprachen wie z. B. Java, C und C++ Unterstรผtzung von Enumerationen und TypeScript Dadurch werden sie auch verfรผgbar. Aufzรคhlungen werden mit dem Schlรผsselwort enum definiert.
Wie deklariere ich eine Enum?
Syntax:
enum NameofEnum {
value1,
value2,
..
}
Beispiel: Enum
enum Directions { North, South, East, West }
Im obigen Beispiel haben Sie ein Enum namens Directions mit den Werten North, South, East und West definiert. Die Werte sind ab 0 fรผr den ersten Eintrag nummeriert und werden fรผr jeden weiteren Eintrag um 1 erhรถht.
Deklarieren Sie einen Enum mit einem numerischen Wert
Standardmรครig wird, wenn einem Enum-Element kein Wert zugewiesen wird, eine Zahl ab 0 angenommen. Das folgende Beispiel zeigt ein Enum mit expliziten numerischen Werten.
enum Directions {
North = 0,
South = 1,
East = 2,
West = 3
}
Sie kรถnnen auch einen Startwert zuweisen, woraufhin die nachfolgenden Elemente inkrementierte Werte erhalten. Zum Beispiel:
enum Directions {
North = 5,
South, // will be 6
East, // 7
West // 8
}
Norden beginnt bei 5, Sรผden ist 6, Osten ist 7 und Westen ist 8.
Sie kรถnnen anstelle der Standardwerte auch eigene Werte zuweisen. Zum Beispiel:
enum Directions {
North = 5,
South = 4,
East = 6,
West = 8
}
Wie greife ich auf eine Enum zu?
Das folgende Beispiel zeigt, wie man ein Enum in seinem Code verwendet:
enum Directions { North, South, East, West } console.log(Directions.North); // output is 0 console.log(Directions["North"]); // output is 0 console.log(Directions[0]); // output is North
Die zusammengestellt JavaDas Skript lautet wie folgt:
var Directions;
(function (Directions) {
Directions[Directions["North"] = 0] = "North";
Directions[Directions["South"] = 1] = "South";
Directions[Directions["East"] = 2] = "East";
Directions[Directions["West"] = 3] = "West";
})(Directions || (Directions = {}));
console.log(Directions.North);
console.log(Directions["North"]);
console.log(Directions[0]);
Da JavaDas Skript unterstรผtzt keine Enumerationen; der Compiler wandelt die Enumeration in eine selbstaufrufende Funktion um, wie oben gezeigt. Die doppelte Zuweisung erzeugt die umgekehrte Zuordnung.ping Von der Nummer zurรผck zum Namen.
Deklarieren Sie ein Enum mit einem String-Wert
Sie kรถnnen beliebige Zeichenkettenwerte zuweisen, wie im folgenden Beispiel gezeigt.
Ejemplo:
enum Directions { North = "N", South = "S", East = "E", West = "W" } console.log(Directions.North); // output is N console.log(Directions["North"]); // output is N console.log(Directions[0]); // output is undefined
Die zusammengestellt JavaDas Skript lautet wie folgt:
var Directions;
(function (Directions) {
Directions["North"] = "N";
Directions["South"] = "S";
Directions["East"] = "E";
Directions["West"] = "W";
})(Directions || (Directions = {}));
console.log(Directions.North);
console.log(Directions["North"]);
console.log(Directions[0]);
โ ๏ธ Warnung: String-Enums haben keine umgekehrte ZuordnungpingVergleichen Sie die beiden oben kompilierten Ausgaben: Die numerische Aufzรคhlung speichert beide Richtungen, wรคhrend die Zeichenkettenaufzรคhlung nur die Zuordnung von Name zu Wert speichert. Deshalb Directions[0] Gibt fรผr einen String-Enum โundefinedโ zurรผck.
Was sind die Module in TypeScript?
Dateien erstellt in TypeScript Globale Variablen haben Zugriff auf Variablen, die in einer Datei deklariert sind und somit auch in anderen Dateien verwendet werden kรถnnen. Diese globale Natur kann zu Codekonflikten und Laufzeitproblemen fรผhren. Mithilfe der Export- und Importfunktionen von Modulen lassen sich Konflikte mit globalen Variablen und Funktionen vermeiden. Diese Funktion wurde in [Version einfรผgen] eingefรผhrt. JavaDas Skript ist mit der ES6-Version kompatibel und wird auch unterstรผtzt in TypeScript.
Warum brauchen Sie Module in TypeScript?
Das folgende Beispiel zeigt das Problem ohne Module.
Beispiel test1.ts
let age : number = 25;
Sie haben in test1.ts eine Variable โAlterโ vom Typ โNummerโ definiert.
Beispiel test2.ts
In test2.ts kรถnnen Sie auf die Variable zugreifen. Alter Die in test1.ts definierte Datei muss wie folgt modifiziert werden:
age = 30; // changed from 25 to 30. let _new_age = age;
Dies kann viele Probleme verursachen, da die Variablen global verfรผgbar sind und von รผberall aus verรคndert werden kรถnnen.
Mit ModuleDer geschriebene Code bleibt lokal in der Datei und kann nicht von auรerhalb abgerufen werden. Um Elemente einer Datei freizugeben, muss diese mit dem Schlรผsselwort `export` exportiert werden. Export wird verwendet, wenn Sie mรถchten, dass eine Variable, Klasse, Funktion oder Schnittstelle in einer anderen Datei verwendet wird. Import Diese Methode wird verwendet, wenn Sie auf ein exportiertes Element zugreifen mรถchten. Dadurch bleibt der Code innerhalb der Datei intakt, und selbst wenn Sie dieselben Variablennamen definieren, werden diese nicht vermischt.
Verwenden von Export und Import
Es gibt viele Mรถglichkeiten zum Exportieren und Importieren. Wir werden die gebrรคuchlichste Syntax besprechen.
Die Syntax fรผr Import und Export 1:
export nameofthevariable or class name or interface name etc
//To import the above variable or class name or interface you have to use import as shown below:
import {nameofthevariable or class name or interfacename} from "file path here without .ts"
Hier ist ein funktionierendes Beispiel fรผr die Verwendung von Export und Import.
test1.ts
export let age: number = 25;
Das Schlรผsselwort โexportโ wird verwendet, um die Variable โageโ mit einer anderen Datei zu teilen.
test2.ts
import { age } from "./test1"
let new_age :number = age;
Das Schlรผsselwort โimportโ wird verwendet, um auf die Alter Variable, und Sie mรผssen den Dateispeicherort wie oben gezeigt angeben.
Syntax fรผr Import und Export 2:
Es gibt noch eine weitere Mรถglichkeit zum Exportieren und Importieren, und die Syntax ist wie folgt:
export = classname;
import classname = require("file path of modulename")
Wenn Sie verwenden exportieren = Um Ihr Modul zu exportieren, muss der Import require(โDateipfad des Modulnamensโ) verwenden.
Hier ist ein praktisches Beispiel, das diesen Fall veranschaulicht.
Kunde.ts
class Customer { name: string; age: number; constructor(name: string, age: number) { this.name = name; this.age = age; } getName(): string { return this.name; } } export = Customer;
testCustomer.ts
import Customer = require("./Customer"); let a = new Customer("Harry", 30); alert(a.getName());
Modullader
Module kรถnnen nicht eigenstรคndig funktionieren, daher benรถtigen Sie einen Modullader, um die Importabhรคngigkeiten zu finden, wie im folgenden Beispiel zu sehen ist: TypeScript Beispiele siehe oben. Als Modullader stehen CommonJS fรผr Node.js und Require.js zur Ausfรผhrung im Browser zur Verfรผgung.
Um Code im CommonJS-Modulformat zu kompilieren, verwenden Sie folgenden Befehl:
tsc --module commonjs testCustomer.ts
Um Code im Requirejs-Modulformat zu kompilieren, verwenden Sie folgenden Befehl:
tsc --module amd testCustomer.ts
Die abhรคngigen Dateien werden mit dem oben genannten Befehl in JS-Dateien konvertiert.
Beispiel: testCustomer.ts wird mithilfe von RequireJS zu testCustomer.js.
define(["require", "exports", "./Customer"], function (require, exports, Customer) {
"use strict";
exports.__esModule = true;
var a = new Customer("Harry", 30);
alert(a.getName());
});
Beispiel: Konvertierung von Customer.ts zu Customer.js mit RequireJS
define(["require", "exports"], function (require, exports) {
"use strict";
var Customer = /** @class */ (function () {
function Customer(name, age) {
this.name = name;
this.age = age;
}
Customer.prototype.getName = function () {
return this.name;
};
return Customer;
}());
return Customer;
});
Um es mit require.js zu testen, mรผssen Sie eine Datei namens main.js erstellen, die die Abhรคngigkeiten wie gezeigt referenziert.
Hier ist die Ordnerstruktur:
src/
Customer.js
testCustomer.js
main.js
require.js // you can get this file from github or npm install requirejs
test.html
Main.js
define(function (require) {
var customer = require("./Customer");
var testCustomer = require("./testCustomer");
});
test.html
<!DOCTYPE html>
<html>
<head>
<title>TypeScript Module testing using Requirejs</title>
<script data-main="main" src="require.js"></script>
</head>
<body>
<h3>Testing modules using Requirejs</h3>
</body>
</html>
Namespaces in TypeScript
Ein Namensraum fasst eine Sammlung von Klassen, Schnittstellen, Variablen und Funktionen in einer einzigen Datei zusammen.
Namespace-Syntax
namespace name{
export class {
}
export interface {
}
export const constname;
}
Der zugehรถrige Code ist unter einem Namespace verfรผgbar.
Arbeitsbeispiel fรผr einen Namespace: testnamespace.ts
namespace StudentSetup { export interface StudDetails { name: string; age: number; } export function addSpace(str) { // will add space to the string given return str.split("").join(" "); } export class Student implements StudDetails { name: string; age: number; constructor(studentdetails: StudDetails) { this.name = studentdetails.name; this.age = studentdetails.age; } getName(): string { return this.name; } } }
Der Name des Namespace ist StudenteneinrichtungSie haben auรerdem eine Schnittstelle StudDetails, eine Funktion addSpace und eine Klasse namens Student hinzugefรผgt.
Zugriff auf einen Namensraum
Im Folgenden finden Sie den Code, in dem Sie den Namespace verwenden. Studenteneinrichtung.
testStudentSetup.ts
let a = new StudentSetup.Student({ name: "Harry", age: 20 }); console.log("The name is :" + StudentSetup.addSpace(a.getName()));
Auf Klassen, Schnittstellen oder Funktionen innerhalb eines Namensraums muss รผber den Namensraumnamen verwiesen werden, zum Beispiel: StudentSetup.addSpace um auf die Funktion zuzugreifen und StudentSetup.Student um auf die Klasse zuzugreifen.
Sie kรถnnen beide Dateien wie unten gezeigt zu einer einzigen JS-Datei kompilieren:
tsc --outFile namespace.js testnamespace.ts testStudentSetup.ts
รberprรผfen Sie die Ausgabe in der Eingabeaufforderung mit dem folgenden Befehl:
node namespace.js
Ausgang:
The name is :H a r r y
Umgebungsdeklarationen in TypeScript
TypeScript ermรถglicht die Nutzung von Drittanbietern JavaSkriptdateien, die Umgebungsdeklarationen verwenden. Der Vorteil dieser Funktion besteht darin, dass Sie die Bibliothek nicht neu schreiben mรผssen und dennoch alle ihre Funktionen mit Typรผberprรผfung nutzen kรถnnen. TypeScript.
Ambient-Syntax
So deklarieren Sie ein Umgebungsmodul:
declare module moduleName {
//code here
}
Die Umgebungsdatei muss wie folgt gespeichert werden:
filename.d.ts
Um die Datei zu verwenden Dateiname.d.ts In Ihrer .ts-Datei mรผssen Sie darauf wie folgt verweisen:
/// <reference path="filename.d.ts"/>
Die Ambient-Typdeklaration in TypeScript verweist auf die Drittanbieterbibliothek und deklariert die benรถtigten Funktionen mit ihren eigenen Datentypen neu. Betrachten wir beispielsweise die kleine JavaDie Skriptbibliothek ist unten dargestellt.
Third Party JavaSkriptdatei: testString.js
var StringChecks = { isString: function (str) { return typeof str === "string"; }, convertToUpperCase: function (str) { return str.toUpperCase(); }, convertToLowerCase: function (str) { return str.toLowerCase(); }, convertToStringBold: function (str) { return str.bold(); } };
Sie haben ein Objekt namens StringChecks, das die Funktionen isString, convertToUpperCase, convertToLowerCase und convertToStringBold besitzt.
Erstellen eines Ambient-Moduls in TypeScript
Nun erstellen wir ein Umgebungsmodul, das auf Folgendes verweist: JavaDas Skript fรผhrt die oben genannten Funktionen aus und fรผgt bei Bedarf Typรผberprรผfungen hinzu.
Dateiname: tstring.d.ts
declare module TestString { export interface StringsFunc { isString(str: string): boolean; convertToUpperCase(str: string): string; convertToLowerCase(str: string): string; convertToStringBold(str: string): string; } } declare var StringChecks: TestString.StringsFunc;
Sie definieren ein Modul namens TestString und exportieren die Schnittstelle StringsFunc. Jede Signatur gibt an, was die Funktion akzeptiert und zurรผckgibt:
- isString(str: string): boolean Die Funktion nimmt eine Zeichenkette entgegen und gibt einen booleschen Wert zurรผck. Die รbergabe einer Zahl oder eines anderen Datentyps fรผhrt zu einem Kompilierfehler.
- convertToUpperCase(str: string): string โ nimmt eine Zeichenkette entgegen und gibt eine Zeichenkette zurรผck.
- convertToLowerCase(str: string): string โ nimmt eine Zeichenkette entgegen und gibt eine Zeichenkette zurรผck.
- konvertierenToStringBold(str: string): string โ nimmt eine Zeichenkette entgegen und gibt eine Zeichenkette zurรผck.
Da der JavaDie Skriptdatei stellt den Objektnamen StringChecks bereit, wir verweisen schlieรlich in der .d.ts-Datei auf denselben Namen:
declare var StringChecks: TestString.StringsFunc;
Verwendung eines Ambient-Moduls in TypeScript
Hier ist die Datei test.ts, die die Umgebungsdatei tstring.d.ts verwendet.
/// <reference path="tstring.d.ts"/> let str1 = StringChecks.isString("Hello World"); console.log(str1); let str2 = StringChecks.convertToUpperCase("hello world"); console.log(str2); let str3 = StringChecks.convertToLowerCase("HELLO"); console.log(str3); let str4 = StringChecks.convertToStringBold("Hello World"); console.log(str4);
Kompilieren Sie mit tsc test.ts, um test.js zu erzeugen:
/// <reference path="tstring.d.ts"/>
var str1 = StringChecks.isString("Hello World");
console.log(str1);
var str2 = StringChecks.convertToUpperCase("hello world");
console.log(str2);
var str3 = StringChecks.convertToLowerCase("HELLO");
console.log(str3);
var str4 = StringChecks.convertToStringBold("Hello World");
console.log(str4);
Sie kรถnnen nun test.js in einer HTML-Datei zusammen mit der Bibliotheksdatei testString.js verwenden.
<html>
<head>
<title>Test TypeScript Ambient</title>
<script src="testString.js"></script>
<script src="test.js"></script>
</head>
<body>
</body>
</html>
Ausgang:
true HELLO WORLD hello <b>Hello World</b>
๐ก Tipp: Bei gรคngigen Bibliotheken mรผssen Sie selten selbst eine .d.ts-Datei schreiben. Installieren Sie stattdessen die von der Community gepflegten Typen, zum Beispiel npm install --save-dev @types/lodashund der Compiler erkennt sie automatisch.
Um fortzufahren, vergleichen Sie die beiden Sprachen direkt in TypeScript vs JavaSkript, erneut besuchen JavaSkript-Array-Methoden fรผr die hier verwendeten nicht typisierten รquivalente und studieren Schleifen in JavaSkript und intern und extern JavaSkript fรผr die Browsergrundlagen, auf denen die kompilierte Ausgabe beruht.


