我尝试为我的模拟实用程序编写防弹界面。
最初,我有一个每个模拟程序都必须实现的接口
export interface MockaronI<T> {
states: { [state: string]: () => T };
}
这里是一组工厂函数,每个模拟都有任意名称。
在我的实用程序内部某个时刻我正在执行伪代码的问题
keysof GenericType (which extends MockaronI) ['states']
获取 string 类型,这对我来说太宽泛了(因为IDE自动完成功能无法正常工作)。我想将其范围缩小到状态对象中的现有状态。
所以基本上我想要这样的东西。但这不是有效的语法。
export interface MockaronI<T> {
states: { [state: infer P extends string]: () => T };
}
在接口实现状态下,是否甚至可能有基于现有键名的字典类型?