Einführung in die grundlegenden TypeScript-Typen

Einführung in die grundlegenden TypeScript-Typen

Statische TS-Typen können künstlich in zwei Kategorien unterteilt werden:

Grundlegende Typen: wie boolean , number , string , Any , Void , Null , Undefined , Never

Objekttypen: wie Arrays, Funktionen, Objekte, Aufzählungen, Tupel.

1. Grundtypen

Die Typdefinition von TS wird im Wesentlichen folgendermaßen definiert, wie im Beispielcode gezeigt:

;(Funktion () {
  /*
   * In TS können Sie Datentypen (Typanmerkungen) definieren, indem Sie den Variablennamen let verwenden: Datentyp = Variablenwert.
   * Sie können den Datentyp bei der Definition auch nicht angeben, TS leitet den Datentyp selbst ab*/
  // Boolescher Typ let boo: boolean = false // Das Zuweisen eines nicht-Booleschen Wertes löst eine Exception aus // Zahlentyp let num: number = 100

  // string let str: string = 'string' // Verwenden Sie einfache oder doppelte Anführungszeichen zur Positionierung str = `template string` // Verwenden Sie die String-Definition der Vorlage // Any type -> gibt an, dass der Typ ein dynamischer Typ sein kann, wodurch die Typprüfung zur Kompilierungszeit entfällt let AnyType: any = 123
  AnyType = true // Doppelte Zuweisung löst keine Ausnahme aus // Void-Typ -> Wird normalerweise für Funktionstypen ohne Rückgabewerte verwendet function demo(): void {
    console.log('Test des Void-Typs')
  }
  Demo()

  // Es gibt zwei spezielle Typen, null und undefined
  // Diese beiden Typen sind Untertypen aller Typen, was bedeutet, dass diese beiden Typen Typen wie Zahlen und Zeichenfolgen zugewiesen werden können. let u: undefined = undefined
  num = u // Weise den Wert der Variablen vom Typ Zahl undefined zu
  lass n: null = null
  boo = n // Weise einer booleschen Variable den Wert null zu
})()

Der Grundtyp ist relativ einfach und ähnelt insbesondere JavaScript . Auf den ersten Blick hat er eine Typdefinition mehr als JavaScript

Es gibt in TS auch einen Typ Never . Dieser Typ stellt Werte dar, die niemals existieren werden.

Beispiel: Der Typ never ist der Rückgabetyp von Funktionsausdrücken oder Pfeilfunktionsausdrücken, die immer Ausnahmen auslösen oder niemals einen Wert zurückgeben.

2. Objekttyp

2.1 Felder

Arrays in TS unterscheiden sich von Arrays in JS. Durch die Verwendung von Arrays in TS können Sie nicht nur eine Variable als Array definieren, sondern auch den Typ im Array lokalisieren.

Der Beispielcode lautet wie folgt:

;(Funktion () {
  //Definiere einen Array-Typ, der nur Zahlen enthält let arr1: number[] = [1, 2, 3]
  console.log(arr1)
  // Definiere ein Array, das Zahlen, Zeichenfolgen und Boolesche Werte enthalten kann. let arr2: (Zahl | Zeichenfolge | Boolescher Wert)[] = ['1', '2', true]
  console.log(arr2)
  //Definiere ein Array beliebigen Typs let arr3 = [1, ['1', '2', true], true]
  console.log(arr3)

  // Definieren Sie ein Array vom Objekttyp. Das Objekt muss zwei Eigenschaften haben: Name und Alter. const objectArray: { name: string; age: number }[] = [
    { Name: 'Yiwan Zhou', Alter: 18 },
  ]
  // Oder deklarieren Sie es über den Typalias // Definieren Sie einen Typalias über den Typ type User = { name: string; age: number }
  const objectArr: Benutzer[] = [{ Name: 'Benutzer', Alter: 18 }]
})()

2.2 Tupel

Der Tupeltyp ermöglicht die Darstellung eines Arrays mit einer bekannten Anzahl und einem bekannten Typ von Elementen, wobei die Elemente nicht vom gleichen Typ sein müssen.

Der Beispielcode lautet wie folgt:

;(Funktion () {
  // Definiere ein Tupel, dessen Werte jeweils Zeichenfolge und Zahl sind. Let Tuple: [Zeichenfolge, Zahl] = ['123', 123]
  konsole.log(Tupel) // [ '123', 123 ]
  // Weisen Sie Tupel [0] = 'Zeichenfolge' nach Index zu
  console.log(Tupel) // [ 'Zeichenfolge', 123 ]
  // Andere Typen zuweisen // tuple[0] = true
  // console.log(Tupel) // wirft eine Ausnahme })()

Die Hauptfunktion eines Tupels besteht darin, jedes Element in einem Array und die Länge des Arrays einzuschränken.

Tupel und Arrays können verschachtelt werden. Die Syntaxstruktur ist wie folgt:

// Verschachtelte Tupel und Arrays let tuples: [string, number][] = [
    ['123', 123],
    ['456', 456],
]

Im obigen Code stellt [ string , number ] ein Tupel dar. Das Hinzufügen von [] am Ende zeigt ein Array an, das Tupel speichert.

2.3 Objekte

Ein Objekt kann alle oben genannten Typen enthalten. Der Beispielcode lautet wie folgt:

;(Funktion () {
  // Definieren Sie ein Objekt mit zwei Eigenschaften: MyName und age, wobei MyName vom Typ String und age vom Typ Zahl ist. let obj: {
    MeinName: Zeichenfolge
    Alter: Anzahl
  }
  // Objektzuweisung. Wenn die Zuweisung nicht gemäß dem oben angegebenen Typ durchgeführt wird, wird eine Exception ausgelöst. obj = {
    MeinName: 'Yiwan Zhou',
    Alter: 18,
  }
  console.log(obj) // { MeinName: '一碗周', Alter: 18 }
})()

In TS müssen wir Typen nicht an jeder Stelle kommentieren, da uns die Typinferenz dabei helfen kann, ihre Funktionalität zu erhalten, ohne zusätzlichen Code zu schreiben. Wenn Sie Ihren Code jedoch lesbarer gestalten möchten, können Sie den jeweiligen Typ angeben.

3. Typinferenz

Manchmal müssen Sie in TypeScript den Typ nicht explizit angeben. Der Compiler leitet den entsprechenden Typ automatisch ab, wie im folgenden Code:

;(Funktion () {
  let myName = 'Eine Schüssel Zhou'
  myName = true // Fehler: Typ „boolean“ kann nicht dem Typ „string“ zugewiesen werden
})()

Als wir die Variable myName definiert haben, haben wir ihren Datentyp nicht angegeben, sondern ihr einfach einen String-Wert zugewiesen. Wenn wir diesen Wert jedoch einem anderen Wert als string zuweisen, löst der Compiler eine Ausnahme aus.

Dies ist die einfachste Typinferenz in TypeScript , die den Datentyp der Variablen basierend auf dem Wert auf der rechten Seite ableitet.

3.1 Typinferenz in Typvereinigungen

Weitere Informationen zu Typvereinigungen finden Sie unter: Vereinigungstypen, Schnittmengentypen und Typschutz

Wenn eine Variable mehrere Wertetypen haben kann, führt TypeScript die verschiedenen Typen zu einem Union-Typ zusammen.

Der Beispielcode lautet wie folgt:

let arr = [1, '2'] // Definiere ein Array, das Zeichenfolgen und Zahlen enthält // Weise dem oben definierten Array Werte neu zu // arr = [true, false] // Fehler: Typ 'boolean' kann dem Typ 'string | number' nicht zugewiesen werden

// Es gibt auch das folgende Beispiel let val = arr.length === 0 ? 0 : 'Die Array-Länge ist ungleich 0'
// val = false // Fehler: Typ „boolean“ kann nicht dem Typ „string | number“ zugewiesen werden.


3.2 Kontexttypen

Die zuvor vorgestellten Beispiele können alle auf den Typ auf der linken Seite von = basierend auf dem Wert auf der rechten Seite von = schließen. Der Kontexttyp, den wir jetzt einführen werden, unterscheidet sich von der vorherigen Typinferenz. Der Compiler leitet den Typ der Variablen basierend auf dem Kontext ab, in dem sich die Variable derzeit befindet.

Der Beispielcode lautet wie folgt:

;(Funktion () {
  // Definieren Sie eine Schnittstelle Schnittstelle Person {
    Name: Zeichenfolge
    Alter: Anzahl
  }
  // Definieren Sie ein Array über die oben definierte Schnittstelle let arr: Person[] = [{ name: '一碗周', age: 18 }]
  // Durchlaufe das definierte Array arr.forEach(item => {
    // Basierend auf der aktuellen Umgebung folgert der Compiler automatisch, dass das Element vom Typ „Hobby“ ist und nicht das Hobby-Attribut besitzt console.log(item.hobby) // Das Attribut „Hobby“ existiert beim Typ „Person“ nicht
  })
})()

Im obigen Code definieren wir zuerst eine Person Schnittstelle und verwenden diese Schnittstelle dann, um ein Array zu definieren. Beim Durchlaufen des Arrays folgert der Compiler, item vom Typ Person ist, und löst daher eine Ausnahme aus.

Wenn wir den Parametern des Funktionsausdrucks Typanmerkungen hinzufügen, wird der Kontexttyp ignoriert und es wird kein Fehler gemeldet.

Der Beispielcode lautet wie folgt:

// Wenn im Kontext Typinformationen angegeben sind, wird der Kontext ignoriert.
arr.forEach((Artikel: beliebig) => {
    // Basierend auf der aktuellen Umgebung folgert der Compiler automatisch, dass das Element vom Typ „Hobby“ ist und nicht das Hobby-Attribut besitzt console.log(item.hobby) // Das Attribut „Hobby“ existiert beim Typ „Person“ nicht
})

4. Typbehauptungen

Mit der sogenannten Typbehauptung teilen Sie TS mit, dass der Datentyp dieses Werts ein bestimmter Typ ist und Sie dies nicht überprüfen müssen.

Dies hat keine Auswirkungen auf die Laufzeit, sondern nur auf die Kompilierungszeit.

Der Beispielcode lautet wie folgt:

let SomeValue: any = "Dies ist eine Zeichenfolge"
// Syntax 1 let StrLength1: Zahl = (<string>SomeValue).length
// Syntax 2 als Syntax let StrLength2: Zahl = (SomeValue als Zeichenfolge).Länge

Es ist erwähnenswert, dass bei der Verwendung von JSX in TS nur die zweite Syntax unterstützt wird.

Dies ist das Ende dieses Artikels über TypeScript-Basistypen. Weitere Informationen zu TypeScript-Basistypen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Beispielcode mit Typescript in Vue
  • Verstehen Sie Funktionen und Klassen in TypeScript?
  • Verstehen Sie Schnittstellen und Generika in TypeScript?
  • TypeScript-Aufzählungstyp
  • Erfahren Sie in einem Artikel mehr über TypeScript-Datentypen
  • Detaillierte Erklärung zur Verwendung von TypeScript-Typanmerkungen

<<:  MySQL ändert die Standard-Engine und Zeichensatzdetails

>>:  jQuery manipuliert Cookies

Artikel empfehlen

Einführung in die Verwendung des http-equiv-Attributs im Meta-Tag

Meta ist ein Hilfstag im Kopfbereich der HTML-Spra...

MySQL-Transaktionskontrollfluss und ACID-Eigenschaften

Inhaltsverzeichnis 1. ACID-Eigenschaften Syntax d...

So übergeben Sie Parameter über CSS an JS

1. Hintergrund, der durch CSS übergeben werden mu...

Linux-Unlink-Funktion und wie man Dateien löscht

1. Unlink-Funktion Bei Hardlinks wird mit „unlink...

So blockieren und verbieten Sie Webcrawler im Nginx-Server

Jede Website stößt normalerweise auf viele Crawle...

Vue implementiert die Funktionen Vergrößern, Verkleinern und Ziehen

In diesem Artikelbeispiel wird der spezifische Co...

Mysql behält den vorhandenen Inhalt bei und fügt später Inhalte hinzu

Dieser Befehl ändert die Datentabelle ff_vod und ...

Das WeChat-Applet realisiert ein Verknüpfungsmenü

Um das Kursdesign zu realisieren, habe ich kürzli...

Vue implementiert Video-Upload-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

So implementieren Sie Datenpersistenz mit dem Vuex-Drittanbieterpaket

Zweck: Ermöglichen Sie die gleichzeitige lokale S...

Grafisches Tutorial zur Installation von MySQL 8.0.15 und Datenbankgrundlagen

Die Installation der MySQL-Software und die Daten...

Beispielcode zur Implementierung transparenter Verlaufseffekte mit CSS

Die Titelbilder in den Spalten von Zhihu Discover...

Allgemeine Symbole in Unicode

Unicode ist ein von einer internationalen Organis...