Wenn Sie, bevor Sie sich für JavaScript interessierten, in traditionellen Sprachen mit starker Typisierung geschrieben haben, sind Sie möglicherweise mit dem Konzept der
void
vertraut. Dies ist der Typ, dessen Verwendung dem Programmierer mitteilt, dass die entsprechenden Funktionen und Methoden beim Aufruf nichts zurückgeben.

Die
void
Entität ist auch in JavaScript und TypeScript verfügbar. In JS ist dies ein Operator. In TS ist dies ein primitiver Datentyp. Und hier und da verhält sich
void
nicht so, wie es viele von denen erwarten würden
void
in anderen Sprachen auf
void
gestoßen sind.
JavaScript void-Anweisung
In JavaScript wertet der
void
Operator den an ihn übergebenen Ausdruck aus. Unabhängig davon, welcher Ausdruck ausgewertet wird, gibt
void
immer
undefined
.
let i = void 2;
Warum brauchen wir einen solchen Operator?
Zunächst sollte beachtet werden, dass Entwickler in den ersten Jahren der JS-Programmierung
undefined
Werte neu
undefined
und jeden Wert darauf schreiben konnten. Aber
void
immer den wahren Wert von
undefined
.
Zweitens ist die Verwendung des
void
Operators eine interessante Möglichkeit, mit sofort aufgerufenen Funktionen zu arbeiten:
void function() { console.log('What') }()
Und das alles - ohne Verschmutzung des globalen Namespace:
void function aRecursion(i) { if(i > 0) { console.log(i--) aRecursion(i) } }(3) console.log(typeof aRecursion)
Da der
void
Operator immer
undefined
zurückgibt und den an ihn übergebenen Ausdruck immer auswertet, haben wir eine sehr ausdrucksstarke Möglichkeit, von der Funktion zurückzukehren, ohne einen Wert zurückzugeben, aber mit einem Aufruf, zum Beispiel einem Rückruf:
Dies führt uns zu dem wichtigsten Weg,
void
zu verwenden. Dieser Operator ist eine Art "Wachposten" -Anwendung. Sollte eine bestimmte Funktion immer
undefined
, kann dies mit dem
void
Operator erreicht werden.
button.onclick = () => void doSomething();
Leerer Datentyp in TypeScript
Der Typ
void in TypeScript kann als das Gegenteil von type
any
. Funktionen in JavaScript geben immer etwas zurück. Dies kann entweder ein vom Programmierer festgelegter oder
undefined
Wert sein:
function iHaveNoReturnValue(i) { console.log(i) }
Da JavaScript-Funktionen, von denen nichts explizit zurückgegeben wird, immer
undefined
, ist
void
in TypeScript der geeignete Typ, um Entwicklern mitzuteilen, dass die Funktion
undefined
zurückgibt:
declare function iHaveNoReturnValue(i: number): void
Die
void
Entität in Form eines Typs kann auch für Parameter und andere Variablendeklarationen verwendet werden. Der einzige Wert, der immer an den void-Parameter übergeben werden kann, ist
undefined
.
declare function iTakeNoParameters(x: void): void iTakeNoParameters() // iTakeNoParameters(undefined) // iTakeNoParameters(void 2) //
Infolgedessen stellt sich heraus, dass in TS die
void
und
undefined
Typen fast dasselbe sind. Aber es gibt einen kleinen Unterschied zwischen ihnen, der in der Tat äußerst wichtig ist. Der zurückgegebene
void
kann durch andere Typen ersetzt werden, sodass Sie erweiterte Muster für die Arbeit mit Rückrufen implementieren können.
function doSomething(callback: () => void) { let c = callback()
Entwickler erwarten, dass solche Designs, die häufig in JS-Anwendungen verwendet werden, genau das tun.
Hier ist das Material zu diesem Thema.
Wenn eine Funktion nur Funktionen akzeptieren soll, die
undefined
, können Sie die Methodensignatur entsprechend ändern:
Zusammenfassung
Der
void
Operator in JavaScript und der
void
Datentyp in TypeScript sind ziemlich einfache Entitäten. Der Bereich der Situationen, in denen sie anwendbar sind, ist begrenzt. Es sollte jedoch beachtet werden, dass der Programmierer, der sie verwendet, höchstwahrscheinlich keine Probleme bei der Arbeit mit ihnen hat.
Liebe Leser! Verwenden Sie
void
in JS und TS?
