[英]TypeScript generic method with type dependent parameter
我有一个想法,可以根据该方法的通用类型自动检查参数的类型。 但是参数的类型应该与给定泛型的具体属性的类型相同。 让我给你看例子。
假设我有以下接口:
interface IMessage {
name: string,
payload: any
}
interface IConcreteMessage {
name: "concreteMessage",
payload: string
}
我想通过这种方式将一些方法接受IMessage称为通用参数:
someobject.genericMethod<IConcreteMessage>(78)
现在的问题是,应该如何声明该方法,以便编译器为给定参数引发类型错误?
public genericMethod<T extends IMessage>(payload: ??) {}
第二件事-我能以某种方式仅从给定的通用参数中提取方法中的“ concreteMessage”值吗?
您可以使用类型查询来实现此目的:
genericMethod<T extends IMessage>(payload: T['payload']) { }
someobject.genericMethod<IConcreteMessage>(78) // will be an error
您可以在运行时从文字字符串类型获取字符串,您将需要传递字符串值作为参数。
好的,所以我得到了以下解决方案:
genericMethod<T extends IMessage>(name: T['name'], payload: T['payload']) { }
缺点是,即使此属性为常数,我也需要在每次调用时输入第一个参数,但我认为我可以接受
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.