【发布时间】:2019-07-11 05:19:28
【问题描述】:
我在 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放在类里面,属性上面或者下面。
非常感谢!
【问题讨论】:
标签: typescript typescript-typings