typescript - 使用类型作为具有约束的泛型的别名

标签 typescript typescript-generics

我有几个泛型函数,它们使用相同的泛型类型,该泛型类型绑定(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 constraintdefault type argument成可重复使用的结构。我能找到的最接近的功能请求是 microsoft/TypeScript#41470和/或microsoft/TypeScript#23188要求一种声明本地 type aliases 的方法;如果存在这样的功能,您可能可以利用它来提供帮助,但也可能不行。如果您真的对此感兴趣,您可能需要提交 issue请求该功能,请记住,您不应该期望它会很快实现(如果有的话)。

关于typescript - 使用类型作为具有约束的泛型的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75608379/

相关文章:

typescript - typescript 中的通用对象类型

node.js - 如何输入自定义异步 Express 处理程序,以便透明地传递通用类型参数

typescript - 如何根据 typescript 中的字符串输入更新对象数据?

Typescript - 嵌套映射类型给出令人困惑的类型提示

javascript - Typescript for (let i of someArray) 在 IE11 中不起作用

node.js - amazon-s3 上传因循环上传文件而失败

javascript - 在 Angular 2 App 中转换双向绑定(bind)属性中的日期

javascript - 我可以使用接口(interface)来定义对象允许的字段吗?

typescript - 输入和验证未知形状的对象数组

typescript - 动态 Typescript 对象属性