使用泛型集合的Typescript泛型回调类型提示

时间:2017-09-26 17:14:17

标签: typescript generics callback

我想定义一个泛型类的构造函数,它接受一个带有一个泛型类型集合的回调。虽然我可以成功定义没有集合的回调类型,但是我收到了一个错误。错误是“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>

任何人都知道如何声明此回调类型?

1 个答案:

答案 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) {}