typescript - Typ 'null' ist dem Typ 'T' nicht zuweisbar
Ich habe diese generische Methode
class Foo {
public static bar<T>(x: T): T {
...
if(x === null)
return null; //<------- syntax error
...
}
}
... //somewhere
const x = Foo.bar<number | null>(1);
Ich bekomme den Syntaxfehler
TS2322: Der Typ 'null' kann nicht dem Typ 'T' zugewiesen werden.
Ich erwarte, dass dies kompiliert, weil T null sein könnte.
Was ist der richtige Weg, dieses Problem zu lösen?
Antwort #1
Sie müssen den Rückgabewert als null deklarieren oder strictNullChecks in Ihrer tsconfig deaktivieren
public static bar<T>(x: T): T | null
oder du könntest null als any eingeben, z.B.
return null as any;
Antwort #2
Seit Version 3.9.5 erzwingt TypeScript strictNullChecks bei numbers und strings, um nur einige zu nennen. Zum Beispiel wird der folgende Code während der Kompilierung einen Fehler auslösen:
let x: number = null;
Um diesen Fehler zu vermeiden, haben Sie zwei Möglichkeiten:
- Setze
strictNullChecks=falseintsconfig.json. Deklariere einen Union-Typ
number | null:let x: number | null = null;
Antwort #3
Du kannst setzen
return null!;
Es hat bei mir funktioniert
