Heim > Web-Frontend > js-Tutorial > Hauptteil

Stark typisierte JavaScript-Lösungen

伊谢尔伦
Freigeben: 2016-11-24 09:35:49
Original
1088 Leute haben es durchsucht

JavaScript ist eine schwach typisierte (oder dynamisch typisierte) Sprache, das heißt, der Typ der Variablen ist undefiniert.

x = 5; // 5
x = x + 'A'; // '5A'
Nach dem Login kopieren

Im obigen Code ist die Variable x zunächst ein numerischer Wert und dann ein String. Der Typ wird vollständig durch den aktuellen Wert bestimmt.

Der Vorteil der schwachen Typisierung besteht darin, dass sie sehr flexibel ist und sehr prägnanten Code schreiben kann. Bei großen Projekten ist die starke Typisierung jedoch vorteilhafter, da sie die Komplexität des Systems verringern, Typfehler zur Kompilierungszeit erkennen und die Belastung für Programmierer verringern kann.

Jemand hat versucht, JavaScript zu einer stark typisierten Sprache zu machen. Bis Strong Typing endlich offiziell unterstützt wird, stellt dieser Artikel drei Lösungen vor, die jetzt verfügbar sind.

1. TypeScript

TypeScript ist eine 2012 von Microsoft eingeführte Programmiersprache. Sie ist eine Obermenge von JavaScript und kann zur Ausführung in JavaScript kompiliert werden. Sein größtes Merkmal ist, dass es starkes Tippen und die ES6-Klasse unterstützt.

Installieren Sie zunächst TypeScript.

$ npm install -g typescript
Nach dem Login kopieren

Geben Sie dann den Typ für die Variable an.

// greet.ts
function greet(person: string) {
  console.log("Hello, " + person);
}
greet([0, 1, 2]);
Nach dem Login kopieren

Das Obige ist der Code der Dateigreet.ts, und das Suffix ts gibt an, dass es sich um TypeScript-Code handelt. Die Parameter der Funktion Greet werden als Strings deklariert, beim Aufruf wird jedoch ein Array übergeben.

Die Verwendung des Befehls tsc zum Kompilieren der ts-Datei in eine js-Datei führt zu einem Typkonfliktfehler.

$ tsc greeter.ts
greet.ts(5,9): error TS2345: Argument of type 'number[]'   
is not assignable to parameter of type 'string'.
Nach dem Login kopieren

2. Flowcheck

Flowcheck ist eine leichtgewichtige Typzusicherungsbibliothek, die zur Laufzeit prüfen kann, ob der Variablentyp korrekt ist.

Installieren Sie zunächst Flowcheck.

$ npm install -g flowcheck
Nach dem Login kopieren

Schreiben Sie dann ein Skript, das den Variablentyp deklariert.

function sum(a: number, b: number) {
  return a + b;
}
sum('hello','world')
Nach dem Login kopieren

Als nächstes verwenden Sie den folgenden Befehl, um das Skript in eine normale JavaScript-Datei zu konvertieren.

$ browserify -t flowcheck -t [reactify --strip-types] \
input.js -o output.js
Nach dem Login kopieren

Die konvertierten Dateien lauten wie folgt.

var _f = require("flowcheck/assert");
function sum(a, b) {
    _f.check(arguments, _f.arguments([_f.number, _f.number]));
  return a + b;
}
Nach dem Login kopieren

Wie Sie sehen können, wird eine Assertionsbibliothek in den Code eingefügt. Bevor jede Funktion ausgeführt wird, wird eine Assertion ausgeführt und ein Fehler gemeldet, wenn die Typen nicht übereinstimmen.

$ node output.js
// throw new TypeError(message);
            ^
TypeError: 
Expected an instance of number got "hello",   
context: arguments / [number, number] / 0
Expected an instance of number got "world",  
context: arguments / [number, number] / 1
Nach dem Login kopieren

3. Flow

Flow ist ein Typprüfungstool, das 2014 von Facebook veröffentlicht wurde, um den Quellcode von React zu überprüfen.

Der Installationsbefehl lautet wie folgt.

$ npm install --global flow-bin
Nach dem Login kopieren

Wenn die Installation nicht erfolgreich ist (das ist bei mir der Fall), müssen Sie sie selbst aus dem Quellcode kompilieren.

Es gibt viele Möglichkeiten, Flow zu verwenden, ich werde nur einige Beispiele nennen. Die beiden zuvor vorgestellten Tools können nur Variablen mit deklarierten Typen prüfen, während Flow Variablentypen ableiten kann.

// hello.js
/* @flow */
function foo(x) {
  return x*10;
}
foo("Hello, world!");
Nach dem Login kopieren

Das Obige ist die Datei hello.js. Die erste Zeile der Datei ist ein Kommentar, der angibt, dass Flow zum Überprüfen des Variablentyps verwendet werden muss.

$ flow check
hello.js:7:5,19: string
This type is incompatible with
/hello.js:4:10,13: number
Nach dem Login kopieren

Führen Sie den Befehl „flow check“ aus und erhalten Sie eine Fehlermeldung: Der erwartete Parameter der Funktion foo ist ein numerischer Wert, in Wirklichkeit jedoch eine Zeichenfolge.

Flow unterstützt auch die Typdeklaration von Variablen.

/* @flow */
function foo(x: string, y: number): string {
  return x.length * y;
}
foo("Hello", 42);
Nach dem Login kopieren

Eine weitere interessante Funktion ist, dass Flow Typanmerkungen in Typdeklarationen umwandeln kann.

// annotation.js
/**
  @param {number} x
  @return {number}
 */
function square(x) {
  return x * x;
}
square(5);
Nach dem Login kopieren

Wenn Sie den Befehl „flow port“ ausführen, erhalten Sie die folgenden Ergebnisse.

$ flow port annotation.js
function square(x: number) : number {
   return x * x;
 }
Nach dem Login kopieren

Eine weitere Einführung in Flow finden Sie unter „Flow erkunden, Facebooks Typprüfer für JavaScript“.


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!