如下图所示,foo在赋值时类型错误:
在 VS Code 中看,也能看到报错
但在cocos中能正常运行,并输出hello。
我刚接触cocos,不太明白这是怎么回事。
Typescript脚本有报错时,能不能让cocos运行也报错?
【环境】
Creator 版本: 3.8.1
目标平台:cocos编辑器 - 浏览器预览
如下图所示,foo在赋值时类型错误:
在 VS Code 中看,也能看到报错
但在cocos中能正常运行,并输出hello。
我刚接触cocos,不太明白这是怎么回事。
Typescript脚本有报错时,能不能让cocos运行也报错?
【环境】
Creator 版本: 3.8.1
目标平台:cocos编辑器 - 浏览器预览
问 AI,给你解释得清清楚楚
你上面的类型写number,下面赋值给个字符串当然报错了
问了AI,可能问的不合适,AI没说到点子上。
就跑到论坛来提问了。
对。但我希望cocos运行时也报错。但实际cocos运行时不报错,还能输出hello
因为它ts是编译为js用的,不知道怎么跟你解释哈
js 变量可以动态赋值不同类型,变量赋值成数值型后,可以再赋值成字符串,都不会出错。
现在你用 ts 声明是数值型,然后赋值了一个字符串类型,就提示你错误,这个提示是 ts 语法推断出你使用错误,运行时并不会报错。
实际编译成 js 后,那个类型是没用的。变成
let xx = null
xx=“hello”
和声明类型没关系
我看了typescript的教程,知道这件事,但不完全懂。
我查看了项目的 tsconfig.cocos.json,觉得这里应该有相关的配置。确实有个【“noEmit”: true】。这个配置的意思是说,不会输出 js。(所以说,cocos没有把ts转js??)
而且看chrome里的输出,文件名是FirstTS.ts,是ts,不是js。
是chrome(而非cocos)把ts转成js了吗?(所以cocos无法控制ts→js的过程?)
现在的浏览器只能运行js
简单来说ts编译成js后这里的(: number)没了
谢谢。
我能在cocos中控制 ts→js 的过程吗?
我希望ts有错,就报错,并且不输出js。
因为我希望用到ts的类型限制,减少程序可能的错误。
如果是现在这样,运行时不报错,ts的类型限制可能就没用了。
用node.js的ts-node,ts有错的话,就会输出错误,并且不执行。我希望cocos的行为和它一样。
现在 ts→js 这步,是浏览器做的吗?
(不是cocos做的?)
这几乎是不可能的,因为ts的官方源码就会报错,(总所周知TypeScript别名AnyScript)
不过你可以在tsconfig.json里开启ts的严格模式来加强类型限制
有报错不是有提示吗,报红了就改呀。
浏览器只认识js,ts既不是一门语言也没有运行环境,你可以把它只当成一个提示工具,除此之外,它什么也不能做
根据官方文档,在 tsconfig 里,把 compilerOptions \ noEmitOnError 设置为 true,就能让ts不转js。(TSConfig Reference - Docs on every TSConfig option
cocos 项目的 tsconfig.cocos.json,默认 compilerOptions \ noEmit 是 true。根据官方文档,这样配置的话,所有ts都不会转js。(TSConfig Reference - Docs on every TSConfig option
这里就比较奇怪…
不较真的话,这样确实就可以了
谢谢,在这个目录找到对应的js了。
现在我一个一个打开看能找到对应的js。文件名不知道怎么和原来的ts对应,您有啥好办法没?
你看它干嘛,反正我不知道怎么一一对应
去查一下怎么开TS的严格模式吧,应该是可以用来解决你现在问题的