使用es6,说我有一个基类:
export class BaseClass {
constructor(meta) {
this.meta = Object.assign({}, { alwaysPresent: 'some value' }, meta);
}
}
和一个子类类:
import { BaseClass } from './base-class';
import childMeta from './child-meta';
export class ChildClass extends BaseClass {
constructor() {
super(childMeta);
}
fn() {
this.meta.property1;
}
}
其中childMeta
为:
export default {
property1: 'property1Value',
property2: 'property2Value'
};
如何创建base-class.d.ts
,以便在执行this.meta
时可以查看childMeta
中的属性?
类似这样的东西:
export class BaseClass {
protected meta: { property1: string; property2: string }; // for illustration purposes
}
注释:
childMeta
实际上可以是具有任何属性的任何js对象到目前为止,我尝试阅读一些动态类型教程,但我似乎无法使其正常工作。
我什至需要吗?
答案 0 :(得分:0)
您可以使用创建基于childMeta
的类型
type ChildMeta = typeof childMeta;
鉴于此,这取决于您要对该类型执行的操作。
如果要在meta
中定义BaseClass
的类型,请添加具有以下类型的字段:
meta: ChildeMeta;
如果仅子类应该获得类型注释,则可以使用类型断言:
super(childMeta as ChildMeta);