【发布时间】:2018-08-04 23:03:41
【问题描述】:
在 TypeScript 中,我们可以像在 C# 中一样拥有泛型类:
export class MyClass<T> { }
但是可以传递可变数量的泛型作为参数吗?我的意思是像
function withVariableArgs(...args: any[]){ }
但是我希望将其作为通用(伪代码)
export class MyClass<...args:any[]> { }
这样我就可以做到new MyClass<number,string> 和new MyClass<number>。这在TS中可能吗?
背景:通用类型事件
我想要一个通用的事件处理程序,它可以让我为事件提供强类型。 This typesafe EventEmitter 只适用于单一类型。有时我需要在同一个事件中传递多种类型,例如字符串 和 整数。使用这个处理程序,唯一的可能性似乎是创建一个接口
interface EventArgs{
id:number,
name:string
}
然后使用let event = new TypedEvent<EventArgs>() 之类的类型。对于复杂类型,定义这样的模型似乎是一种很好的做法。想想如果我们只有两种或三种类型,我认为这有点矫枉过正,会导致复杂性不断增加,而不会提供额外的价值。简单地创建一个像let event = new TypedEvent<number,string> 这样的事件并执行event.emit(1, 'test') 而无需创建模型和实例化它们会很棒。
【问题讨论】:
标签: typescript generics events