我有一个函数foo
,我想接受一个参数bar
,它是一个&#34; newable&#34; ({ new(...args: Array<any>): any; }
)或函数返回类型any。
我尝试了以下两种方法,但在第一个示例中bar
根据编译器的类型为() => any
,在第二个示例中,我在{{上获得了语法解析错误1}} )
的消息&#34;输入预期&#34;。
() => any
请注意我不想使用type Newable = { new (...args: Array<any>): any; };
function foo1(bar: () => any | Newable) {
}
function foo2(bar: Newable | () => any) {
}
类型 - 我想更好地控制功能细节。
答案 0 :(得分:5)
您需要将() => any
括在括号中。像这样:
type Newable = { new (...args: Array<any>): any; };
function foo1(bar: (() => any) | Newable) {
//...
}
function foo2(bar: Newable | (() => any)) {
//...
}