javascript - 参考错误:无法访问初始化前
问题描述
我有简单的自动加载器方法,它使用初始化并返回类的实例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
)
是否有一些问题需要两次扩展的课程?
解决方案
对象是保留字,我只需要将类重命名为其他名称。
推荐阅读
- sql - TERADATA:更新行时生成不需要的空格
- firebase - 按最新添加到数据库的顺序
- c++ - 有没有办法以编程方式从 AppStore 更新应用程序?
- html - 垂直对齐 div 和图像
- ruby-on-rails - Rails:如何从包含的关注点覆盖或将给定范围设为私有?
- c++ - Qt:如何检查键盘焦点是否在 Qt 应用程序主窗口上?
- visual-studio - 如何修复“访问控制列表 (ACL) 结构无效”
- android - 如何在Android上为整个应用制作一个底部App Bar?
- java - 如何修复 SAP Cloud SDK 在应用程序启动期间引发的 DestinationAccessException
- plsql - 从两个具有最新日期的表中检索连接数据