有没有一种方法可以将基于另一个参数的参数类型缩小为Typescript中的函数?

时间:2020-06-25 11:30:24

标签: typescript

我正在尝试为一些过滤器类型的操作创建一个迷你DSL,并为其编写一些辅助方法。

说我有功能

const equals = (left, right) => {}

此函数的类型必须使left值是对象上的字段,而right是该对象类型的值。

如果我做const equals = <T> (left: keyof T, right: T[keyof T]) => {},我会接近,但是right的范围缩小到T上可用的类型,而不仅仅是left的类型。

期望的行为可以通过以下方式实现:

const equals = <T, F extends keyof T>(left: F, right: T[F])

但这需要两个通用参数,这些参数打破了我对该函数周围的代码的类型推断链。理想情况下,我想基于第一个参数键入第二个参数。这可能吗?

谢谢

0 个答案:

没有答案