TS/JS错误:TypeError: Cannot read property 'prototype' of undefined

总结一下解决这个错误的引起和过程。
错误信息:TypeError: Cannot read property ‘prototype’ of undefined
开发语言:TypeScript
编译后语言:JavaScript
开发工具:LayaAir

今天在调试一个新写的框架的时候,突然出现这个问题。
一般情况下,出现这个问题,是缺乏相应的js文件,但是看了一下html文件,发现相关的js文件都有配置相应的

<script src="js/test/LoginHelper.js"></script>
<script src="js/legend/laya/Helper.js"></script>

其中Helper是基类。
平时很少遇到这个问题,正常情况下LayaAir这个IDE是会自动帮我们插入一个新写TS类生成的js文件。
看了一下index.html文件,发现这两个文件都写,只是没有按照继承关系的顺序来。
仔细看了一下其他的js文件,发现都是有按照类的继承关系来插入js文件的。
同时也关注了一下

<!--jsfile--startTag-->
<!--jsfile--endTag-->

这个标签段也确实是会自动插入新建的TS类的。对比一下其他类,发现可以之所以乱序了,是因为TS类采用了泛型的写法
基类 View

export class View<M extends IModel> extends BasicView<Laya.Sprite,M>

子类LoginView

export class LoginView extends mvc.View<mvc.IModel>

然后尝试把泛型代码去掉

export class View extends BasicView
export class LoginView extends mvc.View

结果LayaAir是可以正常地在index.html对这两个类的js文件进行排序。
如果不能使用泛型,那TypeScirpt的强大功能无疑是减弱很多了。
怀疑是LayaAir IDE的bug,急忙在腊鸭的大群上反馈下这个问题
结果客服人员回答说暂时还不支持泛型,没办法了。
最后的解决方法,是把一些不能排序或者一定是先加载js代码放在别的标签,手动排序

<!--jsfile--Custom-->

最后问题得以解决,项目也正常跑起来了

发布了92 篇原创文章 · 获赞 72 · 访问量 78万+

猜你喜欢

转载自blog.csdn.net/sujun10/article/details/54931875