打字稿足够强大吗?

这些日子,每个人都在强迫打字。 有这么多的粉丝和文章。 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工具,但它是nodetypes定义,同时解决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"; 序幕 。