2017-03-29 8 views
0

Ich habe eine Funktion, foo, die ich bar einen Parameter annehmen möchten, die entweder ein „newable“ ist ({ new(...args: Array<any>): any; }) oder eine Funktion Rückkehr Typ jeder.Typoskript Union-Typ zwischen „newable“ oder Funktion

I habe die folgenden zwei Methoden versucht, aber in dem ersten Beispiel bar hat eine Art von () => any entsprechend den Compiler und im zweiten Beispiel erhalte I einen Syntaxanalysefehler auf die ) von () => any mit der Meldung „Type erwartet ".

type Newable = { new (...args: Array<any>): any; }; 

function foo1(bar:() => any | Newable) { 

} 

function foo2(bar: Newable |() => any) { 

} 

Bitte beachten Sie, ich möchte nicht den Function Typ verwenden - ich feinere Kontrolle über die Funktion Besonderheiten haben wollen.

Antwort

5

Sie müssen die () => any in Klammern einschließen. So:

type Newable = { new (...args: Array<any>): any; }; 

function foo1(bar: (() => any) | Newable) { 
    //... 
} 

function foo2(bar: Newable | (() => any)) { 
    //... 
} 
Verwandte Themen