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-->

最後問題得以解決,項目也正常跑起來了

發佈了91 篇原創文章 · 獲贊 72 · 訪問量 78萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章