javascript-TypeError:对象原型只能是Object或为null:未定义
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-TypeError:对象原型只能是Object或为null:未定义,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1504字,纯文字阅读大概需要3分钟。
内容图文
![javascript-TypeError:对象原型只能是Object或为null:未定义](/upload/InfoBanner/zyjiaocheng/669/d93495f848f1462f908f335bf49ca74f.jpg)
在下面的示例中,如果我导入Entity,则会收到帖子的主题错误(TypeError:对象原型可能只是一个Object或null:未定义),但是如果我将导入替换为实际的Entity声明,则代码运行良好.
当我使用ts-node运行代码时,这是出现错误的形式的Customer.ts:
索引
export { Customer } from "./Customer";
export { Entity } from "./Entity";
客户
import { Entity } from "./index";
export class Customer extends Entity {
sku: string;
constructor(po: any) {
super();
this.sku = po.sku;
}
}
实体
export abstract class Entity {
id?: string;
}
Run.ts(测试代码)
import {Customer} from "./";
let c = new Customer({
name: "Bob"
});
console.log(c);
如果我将实体导入替换为这样的声明:
export abstract class Entity {
id?: string;
}
export class Customer extends Entity {
sku: string;
constructor(po: any) {
super();
this.sku = po.sku;
}
}
然后Run.ts记录以下内容:
Customer { sku: undefined }
换句话说,它运行良好并且不会产生任何错误.有什么想法吗?
解决方法:
我怀疑您的原始程序具有循环导入. Run.ts导入index.ts,后者导入Customer.ts,再次导入index.ts.因为index.ts已经在加载过程中,并且它本身依赖于Customer.ts,所以从“ ./index”导入{实体};只需将index.ts的Entity(尚未设置)绑定到Customer.ts的Entity,即使index.ts尚未完成加载,执行仍会继续.然后,在您尝试扩展实体时,它是未定义的.您可能会认为循环导入应该是错误的,或者JavaScript引擎应该使用其他可以正确处理您的情况的算法;我没有资格评论为什么选择当前设计. (其他人可以随意添加有关此信息.)
如您所见,将Customer.ts更改为直接从./Entity而不是./index导入会破坏周期,并且一切都会按预期进行.另一个解决方案是反转index.ts中的导入顺序.
内容总结
以上是互联网集市为您收集整理的javascript-TypeError:对象原型只能是Object或为null:未定义全部内容,希望文章能够帮你解决javascript-TypeError:对象原型只能是Object或为null:未定义所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。