Typoskript herausfiltern, die null-Werte aus einem array

Typoskript, --strictNullChecks-Modus.

Angenommen ich habe ein array der null-Zeichenfolgen (string | null)[]. Was wäre ein single-Ausdruck Weg, um entfernen Sie alle null-Werte in einer solchen Weise, dass das Ergebnis hat den Typ " string[]?

const array: (string | null)[] = ["foo", "bar", null, "zoo", null];
const filterdArray: string[] = ???;

Array.filter funktioniert hier nicht:

//Type '(string | null)[]' is not assignable to type 'string[]'
array.filter(x => x != null);

Array Verstehens könnten schon arbeiten, aber Sie werden nicht unterstützt von Typoskript.

Eigentlich die Frage, kann verallgemeinert werden, um das problem der Filterung ein array von union-Typ durch entfernen der Einträge mit einem bestimmten Typ von der union. Aber konzentrieren wir uns auf die Gewerkschaften, die mit null-und vielleicht undefiniert wie diese sind die häufigsten usecases.

  • Was ist das problem über die Iteration über das array, zu überprüfen, ob er index null ist, und wenn nicht, indem Sie Sie auf das gefilterte array?
  • Iteration+wenn+einfügen ist das, was ich jetzt tun soll. Ich finde es zu wortreich.
  • Auf dem Spielplatz, es funktioniert Super mit array.filter den Weg, den Sie geschrieben. Es braucht nicht einmal die : string[], das ist genug: const filterdArray = array.filter(x => x != null); und der compiler folgert, dass filterdArray ist der Typ string[]. Welche version von typescript verwenden Sie?
  • In der playground wählen Sie Optionen aus und aktivieren Sie strictNullChecks
InformationsquelleAutor SergeyS | 2017-03-30
Schreibe einen Kommentar