我想创建一个通用类,该类需要一个模板参数,该模板参数是仅包含字符串键的接口。
我以为我可以做类似的事情
class MyClass<T extends Record<string, object>> {
sendEventData<TKey extends keyof T>(event: TKey, data: T[TKey]) {
// ...
}
}
但是,如果我将其实例化
interface MyEvents {
someEvent: { foo: string }
}
const instanace = new MyClass<MyEvents>();
我收到编译错误:
Type 'MyEvents' does not satisfy the constraint 'Record<string, object>'.
Index signature is missing in type 'MyEvents'.
如果我完全删除extends Record<string, object
,它可以很好地编译,但是它不限于字符串=>对象的映射。
答案 0 :(得分:4)
Don't enforce In Session Certificate
表示它接受您不需要的任何密钥。
相反,编写Record<string, >
以将其限制为仅存在于类型上并且也是字符串的键。