我正在尝试创建一个通用类Foo,其中DateKey在T的键中,并指示T中的日期字段。因此,我的第一种方法是:
abstract class Foo<T extends { [P in DateKey]: Date }, DateKey extends keyof T> {
abstract get dateKey(): DateKey // Subclasses implement this
constructor(x: T) {
const z = x.foo;
// z is a Date
}
}
我想要的是将x[this.dateKey]
键入为Date
,而在x
上没有其他可访问的字段(即,出于其他所有目的,它是未知的/任何)。但是实际上,发生的情况是x.anything
被键入为日期,并且我可以访问任何属性。
有人可以向我解释为什么会这样,和/或我如何实现我的目标吗?谢谢!