2017-11-24 7 views
0

Ich verstehe im Grunde TS2322, aber in diesem Fall bekomme ich es nicht.Der Typ 'null' kann nicht dem Typ '() => void | zugewiesen werden null '

Ich habe eine bestimmte Klassendefinition wie folgt aus:

export class MyFaultyClass { 
    functionOrNull:() => void | null; 

    constructor() { 
    this.functionOrNull = null; // <- here comes the error TS2322 
    } 
} 

Meine Frage

Warum kann ich nicht auf die definierte Eigenschaft null zuweisen?

Meine Erwartung

constructor() { 
    this.functionOrNull = null; // OR 
    this.functionOrNull =() => {}; 
} 

bearbeiten

ist hier ein "Arbeiten" Beispiel: typescriptlang.org/playground Needs strictNullChecks aktiviert werden.

Antwort

1

Hier ist die Lösung, dann die Erklärung:

export class MyWorkingClass { 
    functionOrNull: {() : void } | null; 

    constructor() { 
    this.functionOrNull = null; // <- Joy 
    } 
} 

Also, wenn Sie sagen, dass die () => void | null Funktion gibt entweder void oder null.

Wenn Sie {() : void } | null; sagen, ist es entweder eine Funktion void zurückgegeben, oder es ist null.

+0

OMG, eigentlich so offensichtlich .... Danke! :) – scipper

+1

'functionOrNull: (() => void) | null; 'sollte auch funktionieren –

+0

@ TitianCernicova-Dragomir ist does. – scipper

Verwandte Themen