白鹭直播间:聊聊Egret引擎4.0 与 TypeScript 2.1~
Posted 白鹭引擎
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了白鹭直播间:聊聊Egret引擎4.0 与 TypeScript 2.1~相关的知识,希望对你有一定的参考价值。
各位白鹭引擎开发者:
在即将到来的白鹭引擎4.0版本中,我们将对白鹭引擎内置的 TypeScript 编译器从 1.8 升级至 TypeScript 2.1 版本。目前我们已经在3.2.6版本中内置了 TypeScript 2.1,由于 TypeScript 自身也是在不断完善,有可能您之前采用 tsc 1.8 版本中正常的代码,在 tsc 2.1 中会遇到问题,我会对一些典型问题进行分析:
使用 TSC 1.8 不报错的代码在 TSC 2.1 中报错了
在我们内测中,这种情况主要有两方面原因:
1. 高版本的 TypeScript 的语法检查更为严格,导致原来不严谨的代码会报错
举例如下:
function test(param:any){
if (typeof param == "string"){
var a = Math.floor(param);
}
}
上述代码,使用 TSC1.8 不会报错,但是使用 TSC2.1之后,由于 TSC新版本可以更智能的分析出在 if (typeof param == "string"){ 语法块中,param 应该是 string 类型的,而 Math.floor 要求传入一个 number 类型,所以就会报错。
2. 高版本中的对浏览器的 API 文件检测更为严格,导致开发者直接操作 DOM 元素的代码报错
举例如下:
var xhr = new XMLHttpRequest();
xhr.response = "hello,world";
在旧版本中,这种写法是可行的,但是在 TSC新版本中引入了一个名为 readonly 的关键字标记这是一个只读属性,并且 TypeScript 新版本内置的浏览器API声明文件中将这个属性设置为了只读,所以这样的代码也会报错。
综上所属,在大部分情况下,这些问题都是因为开发者的代码“不够严谨”导致的,虽然升级 TSC 版本可能导致您的项目会遇到一些报错,但通过这些报错从而发现代码中的一些潜在的问题显然是值得的,这也是白鹭引擎一直坚定使用 TypeScript 这种强类型语言的一个目标。
可以理解的是,在这次版本升级后,您可能会遇到一些比较“困惑”的报错信息,如果您对此无法解决,可以在白鹭引擎的开发者论坛中寻求帮助,我已经建立了专门的传送门用于讨论 TSC 版本升级会导致的问题。
除此之外,虽然白鹭引擎已经在3.2.6版本中升级到了 TypeScript 2.1,但是 Egret Wing 中内置的语法检查器目前还是 1.8 的版本,这可能会导致您在 Wing 中看不到错误,但是编译的时候却会报错,这个问题我们会通过尽快发布新版本 Wing 来解决。
当然,开发者可能会疑惑,为什么白鹭引擎一定要升级到 TypeScript 2.1 版本呢?这就和要即将到来的白鹭引擎全新的4.0版本新特性有关,欢迎大家在12月29日的白鹭引擎斗鱼直播间来收看:-)
开发效率,
白鹭引擎 4.0,
TypeScript 2.1,
脚步近了~
END
以上是关于白鹭直播间:聊聊Egret引擎4.0 与 TypeScript 2.1~的主要内容,如果未能解决你的问题,请参考以下文章
白鹭Egret Engine 1.5震撼发布 HTML5游戏性能大幅提升
如何看待Egret Engine白鹭引擎的技术使用?广州蓝景到我们公司来做技术分享,大家觉得Egret引擎好用吗?
egret白鹭引擎RES资源管理模块,资源动态加载失效BUG,加载卡死BUG,完整解决方案与超详细调试漏洞过程
Egret(白鹭引擎)——“TypeError: Cannot read property 'asCom' of null”