繁体   English   中英

具有类型相关参数的TypeScript通用方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM