我有一个想法,有一个代码可以根据方法的泛型类型自动检查参数类型。但是参数的类型应该与给定泛型类型的具体属性的类型相同。让我给你举个例子。
假设我有这些接口:
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
您可以在运行时从文字字符串类型获取字符串,您需要将字符串值作为参数传递。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句