假设您有以下课程:
class Foo {
protected callbacks: Callbacks = {};
bar(key: string) {
const callback = this.callbacks[key];
// do stuff with callback
}
...
}
可以通过其他方法(稍后)更改回调属性。
如何确保作为属性提供的键是回调属性的实际键?如果将回调实例传递给函数,我会这样做:
function bar<T, Key extends keyof T>(callbacks:T, key: Key) { ... }
但这不适用于“this”关键字。我知道在泛型中使用原始 this.callbacks 是不正确的,因为 this.callbacks 不是类型,而是实例。但是,用 typeof 转换它也不会产生结果。
class Foo {
protected callbacks: Callbacks = {};
bar<Key extends keyof typeof this.callbacks>(key: Key) { // Cannot find name 'this'
const callback = this.callbacks[key];
// do stuff with callback
}
...
}
我错过了一些明显的东西吗?我的整个设计模式有缺陷吗?