2

是否有与 C# 的 Func 关键字等效的 TypeScript?

在今天对 TypeScript 转换一些现有代码的初步探索中,我使用了类/对象的接口,但发现自己不必要地复制了函数类型。我错过了什么吗?

在下文中,我为对象类型 (Data) 定义了一个接口,并将受益于命名 (data: Data) => void

interface Funcs {
    box: (data: Data) => void;
    lbl: (data: Data) => void;
}

谢谢!

4

2 回答 2

3

函数类型(args) => t只是对象类型的缩写{(args): t},所以以下应该可以工作:

interface Func {
  (data: Data): void;
}

interface Funcs {
  box: Func;
  lbl: Func;
}
于 2012-11-04T16:17:19.207 回答
0

在 C# 中,Func采用泛型类型参数。泛型还不是 TypeScript 语言规范的一部分——但它们已列在路线图上。

话虽如此,我不确定你打算如何在这种情况下使用它——你在这之后吗?

伪代码:

interface Funcs {
    box: Action<Data>;
    lbl: Action<Data>;
}

为了使您的定义更短(即我接受数据类型的参数并返回 void)。我用Action的是没有返回值,但你可以Func<Data, ResultType>在这里同样考虑。

无论如何,我们将不得不等待泛型,看看它们是如何实现的,以及它们是否允许这种使用。

于 2012-11-04T05:36:44.000 回答