爱上撸代码的感觉:让 TypeScript 成为你的Creator代码催化剂

不知不觉,把自己从Creator项目转换到TypeScript已经多时了。开始的一周遇到了许多问题,幸好都坚持了下来。感觉自己已经成为TS的忠实粉丝了,毕竟WebStorm+TypeScript撸Cocos代码的感觉,谁用谁知道!

在稳定使用了两三周之后,不敢独享,果断来给大家安利一波。

事先声明:

1、请确保你看懂了github示例项目说明文档中“注意事项”一节,再开始使用TS。如果用于生产环境,请自行测试。

2、本帖仅做技术分享,不涉及JS与TS哪个更好的语言之争。如果你之前觉得TS繁琐,不妨往下看看,也许有所收获。如果实在按捺不住体内的洪荒之力,请使用Ctrl+W净化屏幕快捷键。

Github示例项目地址:

https://github.com/toddlxt/Creator-TypeScript-Boilerplate120

使用说明与注意事项都在上面的github地址里。这里主要安利一下在Creator中使用TS的好处(以WebStorm为例):

极致的代码提示

TypeScript对你的所有代码有非常好的理解,因此总能给出非常精确的代码提示。自己写的TypeScript类就不用说了,看看引擎相关的代码提示吧。

以下所有动图中突然补全的代码都是IDE的代码提示功能自动补全的,基本上除了变量命名和赋值,IDE都自动补全了。

例如,当你扩展一个cc.Node时你可以轻松获得所有cc.Node属性的提示:

099628acd3529b544c4406bc628ca09b.gif

当你写一个Component的时候,可以获得它的properties的属性提示:

d4a953a425463d709a66a5449e031abb.gif

连getComponent都能正确提示:

aa4d733fc7242001886225b62cadd115.gif

甚至连定义Property时都有完美的代码提示:

93f14e6f21df7d9f00700d57884f9bf3.gif

注:所有的Cocos相关的代码提示都是在Creator 1.3引擎自带的creator.d.ts的基础上稍作修改而来的,如果发现代码提示错误或者需要新增提示可以自行修改或添加creator.d.ts中的内容。

极致的错误检查

再也不用担心大小写错误:

d0abb72015d543ef1969946e572a12b6.png

万一把node的属性不小心赋给了component,游戏能正常运行却找不到问题在哪:

d3dd2ec48fd5aadf942a026c74c07600.png

不小心写出不匹配的类型:

11f3b38d1f76949f42eac51be3710aca.jpeg

返回值类型不匹配:

5fa606149ef0478aef4642e573283c14.jpeg

可控参数类型不匹配:

009c9c8af6796e8cf04a0e83b3e4d5a4.jpeg

极致的代码重构

TypeScript对你所有的代码都有非常好的理解,因此它能准确地帮你重构代码。

例如全项目更改某个变量名(也可以是类名、方法名,甚至是文件名[重命名文件自动修改的是整个项目的import]),在JS中是不可能的,而TS可以轻松做到:

c281db507003085208f095847e392b9a.gif

( WebStorm的全局重命名默认快捷键是Shift+F6,VS Code是F2。上图仅显示了两个文件内对B的引用被智能重命名,实际上整个项目其它文件所有对B的引用都会被正确重命名 )

致的模块管理

在TypeScript中需要使用import和export关键字取代require和module.exports,并且import需要使用完整的相对路径而非像require那样只需要文件名。

但是这并不成问题,WebStorm可以自动为你生成完整的import和去除无用的import,你可以不用自己写任何一行import。

例如需要在一个空文件中引入@CCComponent,只需输入@CCC,在弹出的提示框中选择CCComponent,WebStorm会自动生成import(引入其它类与模块也一样):

33079e4f684270e498d5c858ae8634af.gif

对于未使用的import,使用WebStorm的Reformat Code功能(快捷键Ctrl+Alt+L),就会被自动去除:

3b8d6d2e82b05d2f40f32e00066231aa.gif

极致的ES2016,ES2017新功能

TypeScript 2.1已经支持将async, await编译为ES5代码,实测Chrome+Windows模拟器下运行正常。写异步网络请求就是这么简单:

43224fd98618cdb214027d2996964932.jpeg

用async, await优雅地让节点连续runAction(下面是连续左右晃动10次示例):

1b08912bf9d0751b9c6795df41fd626d.jpeg

极致的JS支持

有时我们不想定义那么多的类型,不想写public, protected, private,只想安安静静撸一点功能。没关系,TS只是JS的超集,在.ts文件中写纯JS也没有问题,至于类型,爱加就加,不想加就不加:

acaf55ef32b2d606aa623b48f118dfd8.jpeg

文末的最后友情提醒各位:

一入代码深似海,奈何爱得太深沉!

9bbe331991c9d1b1241eed787a0b03c9.gif

「听说每点一个👍  小编中午就能多加一个🍗哦!」


本文选取自Cocos论坛“toddlxt

6da3458e8539cc09320290a08e808e4c.jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值