命名函数类型

时间:2012-11-04 04:12:00

标签: typescript

是否有类似C#的Func关键字的TypeScript?

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

在下文中,我已经为对象类型(数据)定义了一个接口,并且可以从命名(data:Data)=>中受益。也是无效

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

谢谢!

2 个答案:

答案 0 :(得分:3)

函数类型(args) => t只是对象类型{(args): t}的缩写,因此以下内容应该有效:

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

interface Funcs {
  box: Func;
  lbl: Func;
}

答案 1 :(得分:0)

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

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

伪码:

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

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

在任何情况下,我们都必须等待仿制药,看看它们是如何实施的,以及它们是否允许这种用途。