假设我有一个基本的原型:
const proto = {
const1: 1,
const2: 2
}
现在在某个地方我写了另一个应该可以访问此基本原型的对象。第一次尝试失败。
const consumer = {
method1(): number {
return this.const1 //const1 does no exist
},
method2() {
return this.method1()
}
}
第二次尝试
//consumer is downcast to 'any' since it references itself
const consumer = {
method1(this: typeof consumer & typeof proto): number {
return this.const1
},
method2() {
return this.method1()
}
}
是否有任何技巧或方法告诉this
参数接收到当前对象以及继承的原型? (最好不要重构类)
答案 0 :(得分:1)
您不能使用简单的变量来执行此操作,您将需要一个额外的函数来帮助进行推断,并且需要使用特殊的ThisType<T>
来告诉编译器this
应该做什么适用于对象文字内定义的任何类型:
const proto = {
const1: 1,
const2: 2
}
function extend<TBase, TCurrent>(base: TBase, current: TCurrent & ThisType<TCurrent & TBase>): TCurrent & TBase {
return Object.assign(current, base);
}
const consumer = extend(proto, {
method1(): number {
return this.const1 //works
},
method2() {
return this.method1()
}
});