我在 Typescript 中创建了一个泛型类,以从构造函数中传递的对象开始扩展对象(通过代理,该代理将在构造函数中返回)。
class MyClass<T> {
private _a: 5;
constructor(source: T) {
...
return new Proxy(Object.assign(this, source), { ... });
}
}
如果我想举例MyClass
, 我会去做的:
interface DeepObject {
a: number,
b: {
c: number,
d: { ... }
}
}
const x = new MyClass<DeepObject>({
a: 1,
b: {
c: 2,
d: { ... }
}
});
因此,结果,我将得到 x 作为一个具有内部“DeepObject”属性的类,例如a
, b
, b.d
。但如果我尝试访问x.b.d
,它显然不会识别新属性,因为它们是在运行时以当前状态推入的。
有没有办法使用 MyClass 的T
参数作为类返回类型,知道我正在返回编辑后的“this”(MyClass + new props)?
我试图将它设置为构造函数,但打字稿不允许我,就像
constructor(source: T): ThisType<MyClass<T>> & T { ... }
constructor(source: T): MyClass<T> & T { ... }
此外,使用//@ts-ignore
多行(例如
//@ts-ignore
x.b.c = 5;
//@ts-ignore
x.b.d.f = 9;
),是对打字稿功能的误用,恕我直言。
同样是放[key: string]: any
在类内部、属性之上或之下。
非常感谢!