打字稿足够强大吗?
这些日子,每个人都在强迫打字。 有这么多的粉丝和文章。 angular色团队正在TS中构build自己的框架。 但是我将ES6迁移到TS的经验令人非常失望。
我试图将我们相对较新的代码库(在ES6中编写)移植到上个月的Typescript,并面临一大堆陷阱!
清楚的是,我们正在讨论使用mochaunit testing和ESLintconfiguration的node.js应用程序(使用babel进行传输)。
首先,为了赋权types检查,我设置了noImplicitAny
选项,得到了数百个错误并修复了它。 但之后,由于打字稿不能理解某些node.js预定义模块,比如stream
(由于缺less大量模块的types,问题实际上更大),所以出现打字错误。
之后,我安装了types – build议replace为pipe理库d.ts
文件的tsd
工具,但它是node
types定义,同时解决stream
问题,由于它复制了一些预定义的types,添加了很多错误。
另外,我发现打印机实际上并没有将ES6的许多function实际编译成ES5,比如发电机。 它迫使我进行复杂的构build过程(TS – >(typescript)ES6 – >(babel)ES5),这意味着我必须浪费我原始的源图。
以上都花了很多时间来configuration。
所以,我很困惑。 我真的很喜欢打字稿背后的想法,但实施对我来说似乎很粗鲁。 我希望我错了。
也许有人在真正的项目中使用了Typescript,而不是HelloWorld,可以解释我做错了什么?
我设置了
noImplicitAny
选项
你有很高的期望。 为了从ES6迁移项目时获得更好的体验,请不要使用此选项。
由于打字input错误,导致不能理解一些node.js预定义的模块,比如
stream
。
没有types定义的JS库是一个痛苦。 但是隐式types将会拯救你。
之后,我安装了types添加了很多错误,因为它重复了一些预定义的types。
从您的tsconfig.json
排除浏览器目录和browser.d.ts
。
另外,我发现打字稿实际上并没有把ES6的许多function编译成ES5,比如发电机。 它迫使我做了复杂的构build过程(TS – >(typescript)ES6 – >(babel)ES5),这意味着我不得不浪费我原始的源图。
这是使TS真正健壮的deviseselect:编译的代码不需要任何运行时库。
但是为什么你在生成的ES6代码上使用Babel? 使用Node.js 4或5,您的ES6代码将正常工作。
打字稿足够强大吗?
就像JavaScript虚拟机一样。
TypeScript与Node.js上的目标ES6
从TS 1.7开始,选项--module
可以和目标es6
联合使用。 例如,在tsconfig.json
:
"compilerOptions": { "module": "commonjs", "target": "es6", }
注意:从TS 1.8开始, 模块会以"use strict";
方式发出"use strict";
序幕 。