typescript问题,运行时找不到module定义

  • Creator 版本:1.8.1

最近一个项目打算用Creator+TypeScript,遇到不少问题。
首先用引导创建的typescript项目是会报错的,在高人指点下发现官方生成的creator.d.ts里面居然有乱码,呵呵。当然,通过creator生成的Component代码模板也是有编译错误的,呵呵呵。

  • 目标平台: Web

  • 详细报错信息,包含调用堆栈: oog is not defined (oog是代码里定义的一个module)

以前用过egret,过程非常顺畅,所以typescript给我的印象是简单易用的,我的使用方式如下:
module oog {
export class Class1 {
}
export class Class2 {
}
}
我把某个的模块下的多个类定义放在多个文件中,这些文件的开头都是 “module oog”,然后在scene里挂载的脚本里调用 oog.Class1 即报 oog is not defined 的错误。(没提示编译错误,我认为这是编译通过了。不过我试过故意在ts文件写一些不合法代码,例如写一个不存在的变量,回到cocos creator也不会提示编译错误,再次呵呵)。

我知道如果不使用module,每个Class都用export default定义,然后在引用的地方import上名字和路径是不会出这个运行时错误的,但是这样要做额外的事情,而且对重构路径不友好。

不知道有没办法像egret那样用module组织代码。另吐槽一下,typescript在creator的支持实在是太弱,老拿这种半成品出来,给人感觉这真的很cocos2d。

1赞
  1. creator.d.ts 中有乱码确实是引擎的锅, 没法洗.
  2. 但是第二个点你不按照官方的文档来, 自己搞, 搞出问题了, 来责怪引擎是不是有点说不过去.

例如写一个不存在的变量

这个问题推荐装一个 tslint, 写的时候就会有提示, cteator 目前只会提示语法错误和运行到的代码的运行时错误, 如果你的一些代码没有语法错误也没有运行到, 那么确实是没有提示的.

使用 module 组织代码的问题估计得呼叫 @toddlxt 大神了.

抱歉现在没有专人来跟进 TypeScript 的研发。不过我保证 2018 年一定会对 JavaScript ES Next 和 TypeScript 的开发做一轮优化。

现在我已经降低module的使用了,没办法,同一个文件里的多个class是可以通过module export的,不过多文件就不行了,只能把module名写到class前缀…
当然作为新入坑的人,我这些都只是纯粹的吐槽,要做好引擎不容易。希望18年对ts的支持能到egret的程度吧,ts这个方向很重要,尤其对大型项目以及团队类库积累与传承来说,我们新项目选择cocos的一个前提就是看到官方有支持ts了。
“致敬”unity的设计让cocos获得了比较大的核心竞争力,周边也要跟上,我也希望cocos这样一个经典的游戏引擎能在H5市场重拾辉煌。

2赞

今天想试着玩下coco creator,也想试着最简单的导入模块。结果按照官方例子的不行,所以百度到了这个帖子。
// import {ComUtils} from “…/commonscripts/ComUtils”;//官方例子,VS会找不到( VS code 1.19.3 )
// import ComUtils from “…/commonscripts/ComUtils”;//这个可以找得到

这不是引擎的锅哦

2.3.3版本好像还是不支持module哈