Website-Suche

TypeScript - null gegenüber undefined


Die TypeScript-Codierungsrichtlinien besagen

Verwenden Sie undefined. Verwenden Sie nicht null

Nachdem ich gerade einen weiteren Artikel über ECMAScript gelesen habe, der null gegenüber undefined befürwortet, fragte ich mich, ob die Begründung von Microsoft oder dem TypeScript-Team für diese Entscheidung bekannt ist?

Antwort #1

Für Richtlinien ist keine Begründung erforderlich, die Anforderung könnte zufällig gewählt werden, um den Codebestand konsistent zu halten.

Was diese Richtlinie betrifft, benötigt undefined mehr Zeichen zum Tippen, muss aber keiner nullbaren Variablen oder Eigenschaft explizit zugewiesen werden:

class Foo {
  bar: number|undefined;
}

function foo(bar: number|undefined) {}

gegen

class Foo {
  bar: number|null = null;
}

function foo(bar: number|null = null) {}

Außerdem ist es weniger praktisch, den Typ eines null-Wertes zur Laufzeit zu überprüfen, da typeof val === 'object' sowohl für null als auch für Objektwerte gilt, während es typeof val === 'undefined' für undefined ist.

Es gibt eine relevante TSLint-Regel, die dieses Anliegen anspricht, no-null-keyword.

Antwort #2

Ich habe vor ein paar Monaten einige Recherchen durchgeführt und bin zu dem Ergebnis gekommen, dass undefined unter Verwendung der TSLint-Regel 'no-null-keyword' priorisiert werden muss.

Ich habe versucht, meinen Code zu ändern, und ich hatte einige Probleme. Warum? Weil ich eine API benutze, die null für leere Felder zurückgibt.

Ich hatte Schwierigkeiten wegen der TSLint-Regel mit den dreifachen Gleichheitszeichen.

if (returnedData === undefined) // will be false because returnedData is null

Die Ihnen 2 Optionen geben:

1) Fügen Sie einige Parameter zu Ihren Triple-Gleich-Regeln hinzu.

"triple-equals": [true, "allow-null-check"] und mache If (returnedData == null)

allow-null-check erlaube "==" für null

2) Verwenden Sie stattdessen If (returnedData), aber es überprüft, ob null/undefined/leer string oder null ist

Verwandte Artikel