GDScript 的好、坏与丑:从 TypeScript 移植过来后的实感
来源: azhdarchid.com — 2026-09-13
概述
作者把同一套系统先用 TypeScript 实现、再移植到 GDScript 跑在 Godot 上,因此对这门语言有了整体判断。好的一面是它为游戏逻辑而生:原生 Vector2 与 Vector3、区分整数与浮点、标准库自带好用的 PRNG、专门的 match 语句、与引擎高度耦合的注解系统与 preload,而且没有垃圾回收,改用引用计数加手动管理场景树生命周期,避免了 GC 带来的帧抖动。坏的一面是增量类型系统半成品:map() 永远返回无类型数组,函数只是没有类型信息的 Callable,没有联合类型与判别联合,泛型嵌套无从表达;他的建议是大多数情况下别用带类型的集合。丑的部分集中在缩进语法带来的摩擦:多行回调难写、没有解构赋值与展开运算符、缺少不可变对象的语言构造,数组连 flatmap 都没有。
核心要点
- 它并不是玩具语言:原生向量类型、区分整数与浮点、没有垃圾回收,还有只有在引擎生态里才有的 preload。
- 类型系统是明确可改进的短板:map() 永远返回无类型数组,函数只是 Callable,没有联合类型,也不能写 Array[Array[int]]。
- 缩进语法让多行回调与高阶函数写起来很痛苦,数组连 flatmap、zip 都没有。
- 优势在于 GDScript 不必背兼容包袱,Godot 5 可以放手做破坏性改动,所以作者对它的演进抱有希望。
金句
我建议大多数场景下不要用带类型的集合,因为这个特性整体上还相当不成熟。
👍 0
👎 0
返回 Lobsters 首页