typescript - Tipul 'null' nu poate fi atribuit tipului 'T'
Am această metodă generică
class Foo {
public static bar<T>(x: T): T {
...
if(x === null)
return null; //<------- syntax error
...
}
}
... //somewhere
const x = Foo.bar<number | null>(1);
Primește eroarea de sintaxă
TS2322: Tipul 'null' nu poate fi atribuit tipului 'T'.
Mă aștept ca acesta să se compileze deoarece T ar putea fi null.
care este modul corect de a rezolva această problemă
Răspuns #1
Trebuie să declari tipul de return ca null sau să dezactivezi strictNullChecks în tsconfig-ul tău
public static bar<T>(x: T): T | null
sau ai putea tasta null as any de exemplu.
return null as any;
Răspunsul #2
Începând cu versiunea 3.9.5, TypeScript aplică strictNullChecks pe numbers și strings, doar ca să numim câteva. De exemplu, următorul cod va genera o eroare în timpul compilării:
let x: number = null;
Pentru a evita această eroare, aveți două opțiuni:
- Setați
strictNullChecks=falseîntsconfig.json. Declară un tip de uniune
number | null:let x: number | null = null;
Răspunsul #3
Poți pune
return null!;
A funcționat pentru mine
