typescript - O tipo 'null' não é atribuível ao tipo 'T'
Eu tenho este método genérico
class Foo {
public static bar<T>(x: T): T {
...
if(x === null)
return null; //<------- syntax error
...
}
}
... //somewhere
const x = Foo.bar<number | null>(1);
Estou recebendo o erro de sintaxe
TS2322: O tipo 'null' não é atribuído ao tipo 'T'.
Estou esperando que isso compile porque T poderia ser null.
qual é a maneira adequada de resolver este problema
Resposta #1
Você precisa declarar o tipo de retorno como null ou desligar strictNullChecks no seu tsconfig
public static bar<T>(x: T): T | null
ou você poderia digitar null como any por exemplo.
return null as any;
Resposta #2
Desde a versão 3.9.5, o TypeScript aplica strictNullChecks em numbers e strings, só para citar alguns. Por exemplo, o código a seguir gerará um erro durante a compilação:
let x: number = null;
Para evitar esse erro, você tem duas opções:
- Defina
strictNullChecks=falseemtsconfig.json. Declare um número de tipo
de união | null:let x: number | null = null;
Resposta #3
Você pode colocar
return null!;
Funcionou para mim
