【发布时间】:2021-07-26 08:22:12
【问题描述】:
我有一个简单的自动加载器方法,它使用require() 初始化并返回类的实例
简单的 require 是一些从数据库请求信息并检查文件系统中是否存在类的逻辑。
let elementClass = require('./elements/' + element.name).default;
Node 和 ts-node 编译没有问题,但是通过 require 创建实例时我得到
ReferenceError: Cannot access 'Object' before initialization
Object 是由Element 扩展的主要抽象类,然后由元素类型扩展。
必需是链类中的最后一个elementType
如果没有Object 类被扩展,则类初始化没有问题,但Object 类在没有任何修改和空白构造函数的情况下进行了测试。并将所有逻辑转移到Element 类
对象.ts
export default class Object
{
public id: number;
public name: string;
public type: string;
public parent: number;
public owner: number;
public permission: string;
public data: {[name: string]: any};
protected dataSchema: {[name: string]: any} = {};
constructor(id: number, name: string, type: string, parent: number, owner: number, permission: string, data: {[name: string]: any})
{
if(new Validator().validate(data, this.dataSchema))
throw new Error('Invalid input data');
this.id = id;
this.name = name;
this.type = type;
this.parent = parent;
this.owner = owner;
this.permission = permission;
this.data = data;
}
}
元素.ts
import Object from "./object";
export default class Element extends Object
{
/**
* simple logic no constructor
*/
}
元素类型.ts
import Element from '../element';
export default class ElementType extends Element
{
/**
* Simple logic without constructor
*/
}
即使类中没有任何简单的方法,它也不起作用,它只在不使用 Main Parent 类时才起作用 (Object)
是否有一些问题需要两次扩展的类?
【问题讨论】:
-
Object不是保留字吗? -
现在,我觉得自己真的很愚蠢,我已经查找了所有内容,但这对我来说并没有什么启发。谢谢你。抱歉打扰了。
标签: javascript node.js typescript