我有几个泛型函数,它们使用相同的泛型类型,该泛型类型绑定(bind)到给定类型并默认为其他类型。
类似这样的事情:
function pepe<TInterpolationMap extends object = StringMap>(key: string, ownOptions: TOptions<TInterpolationMap> | string): string = {
/* code */
}
function kaka<TInterpolationMap extends object = StringMap>(key: string, ownOptions: TOptions<TInterpolationMap> | string): string = {
/* code */
}
以及更多具有相同签名的函数。
我可以做一些事情,比如将该声明放入抽象中,如下所示:
type boundedType<T> = <T extends object = StringMap>
因此该方法的声明可以这样写:
function pepe<boundedType<TInterpolationMap>>(key: string, ownOptions: TOptions<TInterpolationMap> | string): string = {
/* code */
}
function kaka<boundedType<TInterpolationMap>>(key: string, ownOptions: TOptions<TInterpolationMap> | string): string = {
/* code */
}
这不仅可以节省我的编写时间,还可以在一个地方更改受约束的泛型参数(我的意思是:对象和 StringMap)。
最佳答案
不,TypeScript 目前不支持抽象 generic constraint或 default type argument成可重复使用的结构。我能找到的最接近的功能请求是 microsoft/TypeScript#41470和/或microsoft/TypeScript#23188要求一种声明本地 type
aliases 的方法;如果存在这样的功能,您可能可以利用它来提供帮助,但也可能不行。如果您真的对此感兴趣,您可能需要提交 issue请求该功能,请记住,您不应该期望它会很快实现(如果有的话)。
关于typescript - 使用类型作为具有约束的泛型的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75608379/