使用TS遇到的两个错

1、error TS6082: Only ‘amd’ and ‘system’ modules are supported alongside --outFile.
看到的论坛类似的帖子是 http://forum.cocos.com/t/ts-js/48932/3 ,按照这个解决方法的话,那不是每在VS Code里面写一个文件都要在Creator里面转换成插件了吗?

2、tsconfig.json里面按照文档( http://docs.cocos.com/creator/manual/zh/scripting/typescript.html )增加了"include": [“namespaces”]之后代码文件就报错,SuperClass.ts报“找不到名称cc”,求解?

1赞


如图

我也一样的问题,搞了半天搞不定能单独使用的ts

找不到 cc,是因为你没有添加 creator.d.ts 吧?你是否执行了 开发者 -> VS Code 工作流 -> 更新 VS Code 智能提示数据 ?

这个我没看懂,哪来的报错?为什么会有 --outFile 参数??

http://docs.cocos.com/creator/manual/zh/scripting/typescript.html

多谢回复,我是按照这个文档下面的“使用命名空间”这段来做的。

要想使用 TS 作为项目开发语言, 要么在创建游戏的时候使用 TypeScript 模板创建, 要么创建完成后吧 开发者 -> VS Code 工作流 里的菜单挨个点一遍.

这个肯定是做过的

就是安装官方文档做下来就是这样,ctrl+shift+B编译的时候先是报error TS6082: Only ‘amd’ and ‘system’ modules are supported alongside --outFile.。按照另外一个贴说的改成outDir后能编译了,但是就找不到CC了。
另外如果使用creator里的工作流添加了task编译任务,就没法按照文档里说的添加TS的编译任务,必须要删掉后creator添加的才行

恩最后一个问题也是应该也是有的,vs code更新了版本估计,官方大大来帮忙解决下吧

抱歉这个我也不太清楚,暂时没人去研究这块了。VSCode 整天更新我们也跟不上。

那做文档时候用的哪个版本?我可以试试那个版本,这个功能还是必要的,可以用来放全局的东西

不记得了…… 当时没记录这些东西

问一下,你的需求是,把ts写的插件转为js,还是使用ts写Creator游戏脚本?

用ts写游戏代码。

你的环境是什么, 我的:

Creator: 1.6.2
VSCode: 1.19.1
typescript@2.6.2
tslint@5.8.0

一切正常. 另附上我的 tsconfig.json :

{
  "compilerOptions": {
    "module": "commonjs",
    "lib": [ "dom", "es5", "es2015.promise", "es2015" ],
    "target": "es5",
    "allowJs": true,
    "experimentalDecorators": true,
    "skipLibCheck": true
  },
  "exclude": [
    "node_modules",
    "library",
    "local",
    "temp",
    "build",
    "settings"
  ]
}

我之前也碰到过,大概就是这个流程

改tsconfig-》ts编译成js-》cc找不到-》creator开发者选项-》cc找到了-》tsconfig被改回去了-》感叹世界真奇妙

如果你初学,那你应该是不需要那个namespace的,跳过那一节吧,tsconfig.json用默认的不要改,ts代码都放在assets目录下,就可以了。ts都是Creator自动编译的,不需要我们操心tsconfig.json。
其实文档不该让用户改项目文件夹下的tsconfig.json,因为Creator的ts工作逻辑是这样:

  1. Creator内置一个tsconfig.json或类似的编译选项,用于内部编译打包ts文件的时候使用,我们看不到也改不了。所以你改变项目目录下的tsconfig.json,不会影响代码的编译打包和运行。
  2. 项目目录下的tsconfig.json,主要目的是为了IDE和TypeScript的检查和提示。比如module指定为commonjs,意思是告诉IDE和TS编译器,代码将会以commonjs的方式打包,这样IDE和TS才知道你可以使用import,export等关键字;比如experimentalDecorators告诉IDE和TS启用装饰器,这样你用@ccclass的时候才不会报错;比如skipLibCheck,意思是告诉IDE和TS跳过.d.ts的代码检查,这样creator.d.ts中还未修复的一些错误,不会当作你的项目问题爆在你的IDE错误提示中。

你发的第1个错误,意思是outFile参数只支持amd和system两种打包方式,commonjs不支持,这是打包方式决定的。outFile是把所有ts代码打包成一个.js文件,只有amd和system支持。你改成了outDir,意思是把所有ts代码,打包到对应目录下同样结构和名字的各个.js文件,commonjs是支持的。
你发的第2个错误,意思是让IDE和TypeScript只检查和编译namespaces文件夹下的文件,那么它就会跳过根目录下定义引擎API的creator.d.ts,自然就没有cc了。

综上,绝大多数人是不需要使用namespace的,如果非要使用, 那应该新建一个文件夹,在那个文件夹下配置好tsconfig.json,写好ts,打包成单个js文件后,再拷贝回Creator项目assets文件夹下作为插件导入。

9赞

这个解释比较到位,遇到过同样的问题,最后通过新建一个文件夹和tsconfig.json解决。可以在新的tsconfig.json里面配置输出文件直接指向目标aasets目录,这样就不用拷贝啦。。。。

谢谢兄弟指导,关键是要在那个文件中新建一个tsconfig.json,十分感谢!

这个在大项目中是有意义的,可以定义全局变量又不污染顶层,方便写代码,文档还是有必要的