我想定义一个泛型类的构造函数,它接受一个带有一个泛型类型集合的回调。虽然我可以成功定义没有集合的回调类型,但是我收到了一个错误。错误是“TS2371:参数初始化程序仅在函数或构造函数实现中允许”。
这给了我错误,但是我想要的类型定义:
private void metronome_Run(object sender, EventArgs e)
{
mediaElement1.Stop();
mediaElement1.Play();
}
这样可行,但不是我想要的类型:
import {List} from "immutable";
export class BackendToUI<BM, UM> {
constructor(private backendToUI: (BM, List<UM>) => UM) {}
}
我在export class BackendToUI<BM, UM> {
constructor(private backendToUI: (BM, UM) => UM) {}
}
和UM[]
时遇到了同样的问题,所以问题不在于不可变List类型定义中的某些实现问题。
提前定义类型也无济于事,尽管我没想到:
Array<UM>
任何人都知道如何声明此回调类型?
答案 0 :(得分:0)
请记住,TypeScript中类型位置的参数名称不是可选的。你到处写了一个像这样的函数类型
(BM, UM) => UM
您需要编写参数名称
(b: BM, u: UM) => UM
e.g。在这里,而不是
constructor(private backendToUI: (BM, List<UM>) => UM) {}
你需要
constructor(private backendToUI: (b: BM, u: List<UM>) => UM) {}