react - typescript tutorial




Was ist der Unterschied zwischen never und void im Typoskript? (4)

Ich habe das gelesen, aber es ist unklar, was der Unterschied zwischen "nie" und "nichtig" sein würde.


Aus theoretischen Gründen benötigte TypeScript mit --strictNullChecks neuen Flag --strictNullChecks einen neuen Bottom-Typ (da null und undefined nicht mehr vorhanden sind). Der Typ ist never ein solcher Bottom-Typ und macht das TypeScript-Typsystem konsistenter.


Der Rückgabetyp von Promise.reject() ist Promise<never> , was bedeutet, dass "es niemals aufgelöst wird".

Wenn also eine Funktion Promise<never> zurückgibt, werden Promise<never> nur Fehler zurückgegeben. Auf der anderen Seite kann Promise<void> ohne Wert aufgelöst werden.


Zusamenfassend:

void return void , never niemals zurück.


Niemals wird darüber informiert, dass dieser bestimmte Teil nicht erreichbar sein sollte. Zum Beispiel in diesem Code,

function do(): never {
    while (true) {}
}

Sie haben eine Endlosschleife, und wir möchten die Endlosschleife nicht durchlaufen. Einfach so.

Aber eine echte Frage ist, wie kann es für uns nützlich sein? Dies kann beispielsweise hilfreich sein, wenn Sie erweiterte Typen erstellen, um zu verweisen, was sie nicht sind

Deklarieren wir zum Beispiel unseren eigenen NonNullable-Typ:

type NonNullable<T> = T extends null | undefined ? never : T;

Hier prüfen wir, ob T null oder undefiniert ist. Wenn dies der Fall ist, weisen wir darauf hin, dass dies niemals geschehen sollte. Dann, während Sie diesen Typ verwenden:

let value: NonNullable<string>;
value = "Test";
value = null; // error

Void ist eine Information, dass Funktionen mit diesem Typ keinen Wert zurückgeben, aber erreichbar sind und verwendet werden können.





typescript