是否可以创建表示函数签名的对象/类/接口?

时间:2017-07-18 12:51:38

标签: typescript arrow-functions

我的代码中已经按预期工作了。我想要的是使它变得冗长,使方法签名更加自我解释(我知道我可以使用Doc注释,但我也想使用 TypeScript 例如,可以通过TSLint进行更好的验证。

今天我有这个:

class Test{
    testMetadada<T>(expression: (t: T) => void) {
        // ...
    }
}

expression对象的类型为(t: T) => void,这个解释不是很明确,我希望如下:

class Expression<T> extends (t: T) => void{

}

interface Expression<T> extends (t: T) => void{

}

let Expression = ((t: T) => void)<T>;

所以我的方法是这样的:

class Test{
    testMetadada<T>(expression: Expression) {
        // ...
    }
}

Expression代表函数(t: T) => void

我能用这种方式做什么?

  

请参阅here the example of what I'm trying to implement with this(将Arrow function of TypeScript用作元数据Lambda Expressions C#的可能性

1 个答案:

答案 0 :(得分:2)

是使用类型别名

type Expression<T> = (t: T) => void

https://www.typescriptlang.org/docs/handbook/advanced-types.html

在你班上......

class Test {

    testMetadada<T>(expression: Expression<T>) {
        // ...
    }

}
  

Example updated with solution