【发布时间】:2019-02-11 07:55:39
【问题描述】:
使用 Java,我们可以创建具有抽象方法的 ActionListener 类的实例,如下所示(已经有一段时间了):
new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// whatever
}
}
使用 TypeScript,这是我能做到的最接近的:
export abstract class ActionListener {
constructor(f: any) {
this.actionPerformed = f;
}
abstract actionPerformed(input: string): string;
}
new ActionListener(input => {
});
至少有2个问题:
如果您在 TS 中使用抽象方法,则该类必须抽象(我认为在 Java 中您可以拥有可以稍后实现的抽象方法)。
我不知道如何将输入函数 f 的类型与解析方法的类型联系起来。
有谁知道是否有办法用 TS 做到这一点?
也许我们不能将abstract 与 TS 一起使用,而必须更像这样:
type ActionPerformed = (input: string) => string;
export class ActionListener {
parse: ActionPerformed;
constructor(f: ActionPerformed) {
this.parse = f;
}
}
new ActionListener(input => {
return 'foo';
});
【问题讨论】:
标签: typescript tsc typescript3.0