typescript - Typ 'null' nie je priraditeľný k typu 'T'


Mám túto generickú metódu

class Foo { 
     public static bar<T>(x: T): T {
         ...
         if(x === null)
             return null; //<------- syntax error
         ...
     }
 }


... //somewhere
const x = Foo.bar<number | null>(1);

Dostávam syntaktickú chybu

TS2322: Typ 'null' nie je priraditeľný k typu 'T'.

Očakávam, že sa toto zkompiluje, pretože T môže byť null.

aký je správny spôsob, ako vyriešiť tento problém

Odpoveď č. 1

Musíte deklarovať návratový typ ako null alebo vypnúť strictNullChecks vo svojom tsconfig

public static bar<T>(x: T): T | null

alebo môžete zadať null as any, napríklad

 return null as any;

Odpoveď č. 2

Od verzie 3.9.5 TypeScript vynucuje strictNullChecks na číslach a reťazcoch, aby sme uviedli aspoň niekoľko príkladov. Napríklad nasledujúci kód vyvolá chybu počas kompilácie:

let x: number = null;

Aby ste sa tejto chybe vyhli, máte dve možnosti:

  • Nastavte strictNullChecks=false v tsconfig.json.
  • Deklarujte zjednotený typ number | null:

    let x: number | null = null;
    

Odpoveď č. 3

Môžete dať

return null!;

Fungovalo to pre mňa

Súvisiace články