考虑使用 TypeScript
我不会成为那种告诉你必须使用 TypeScript(或者 Flow)的人。我也不会深入探讨TS 与 Flow 的争论。已经有很多人在讨论这个问题了。我只想提出一些你可能想要考虑使用 TypeScript 的充分理由。之后,就交给你自己决定吧。
我从 2014 年秋季(v. 1.3)开始使用 TypeScript。它已经取得了长足的进步。为了将其保持为 JavaScript 的超集(而不是改变 JS 语言),人们投入了大量精力,这令人惊叹。感谢Anders Hejlsberg、整个 TypeScript 团队以及开源软件的各位,是你们让这个项目如此出色。
为什么选择 TypeScript?
那么,让我们开始吧。如果你从未使用过 Java 或 C# 这样的静态类型语言,这对你来说可能很陌生。你可能会问自己,为什么要选择 TypeScript?
- 类型安全:在开发过程中,如果类型不正确,则会在编译时捕获。例如
const index: number = 'hi'; // index can't be a string
,如果对象的属性有拼写错误。这使得我们可以在开发早期就捕获错误,而不是在运行时(因为 JS 是动态类型语言)。这里有一篇关于静态类型语言与动态类型语言的精彩解释。 - 使用支持 TypeScript 的编辑器或插件时的重构和 Intellisense 功能。
- Visual Studio Code,我的首选编辑器。这是我的设置:vscode.iamdeveloper.com。
- TypeScript Atom 插件
- TypeScript Sublime Text插件
- WebStorm
- IntelliJ Ultimate
- 适用于 Visual Studio 2015 的 TypeScript
- Visual Studio 2017(包含 TypeScript 支持)
- alm.工具
- 我漏掉了一个吗?
- 即使您的项目不是用 TypeScript 编写的,在使用包含 TypeScript 声明文件的 npm 包时也会出现智能感知(据我所知,这仅适用于 VS Code。如果不是这种情况,请提出意见。)
太棒了,看起来很棒,但是如何使用不使用 TypeScript 的项目中的 npm 包呢?如上所述,即使你的项目不使用 TypeScript,Visual Studio Code 也可以获取声明文件。那么这些声明文件从哪里来呢?
TypeScript 声明文件
什么是 TypeScript 声明文件?简而言之,它是一个描述包中包含哪些类型的文件。对于基于 TypeScript 的项目的作者来说,他们几乎总是会编写 TypeScript 声明文件。对于非 TypeScript 编写的项目,有时包作者会手动编写声明文件并在项目中维护它们。不过在大多数情况下,社区会介入/挺身而出,为非 TypeScript 编写的项目手动编写声明文件。它们都存储在一个名为DefinitelyTyped的存储库中,这是一个由 JS/TS OSS 社区维护的高质量 TypeScript 类型定义存储库。
要为没有自己的声明文件的包添加类型,请安装其等效@types
包。例如,npm install lodash --save;npm install @types/lodash --save-dev;
现在当您在支持 TS 的编辑器中在 TS 项目中使用 lodash 时,您将获得类型化的 Intellisense。
谁在使用它?
TypeScript 所倾注的辛勤(智慧)工作和热爱并没有被忽视。最近,一些你可能知道的大型项目已经迁移到了 TypeScript。
注意:我会不时更新此列表。
- 有趣的是,Visual Studio Code是用 TypeScript 编写的!
- Angular 在 2.0 版本中采用了 TypeScript(相关Dart、Typescript 和 Google 的官方语言)
- Slack 上的 TypeScript – 多人正在编写代码
- GitHub 使用 Electron 重写其桌面客户端
- Apollo GraphQL
- MobX
- 福米克
- 拉兹尔
- Lyft 的 TypeScript
- RxJS
- glimmer.js(Ember 出名的),也与Glimmer.js 相关:与 TypeScript 有什么关系?
- 汇总
- 比轻量级更轻量:我们如何使用 Preact 和 Glimmer.js 构建两次相同的应用程序 | LinkedIn 工程
我相信还有其他的,但这些是我所知道的比较大的项目。你可以随时在 GitHub 上查看热门的 TypeScript 项目。
其他资源
这里有一些额外的资源可以帮助您开始运行。
- TypeScript 游乐场
- 非官方 TypeScript 游乐场(2019 年 5 月更新)
- 深入探究 TypeScript
- TypeScript 基础知识(很棒的免费课程)
- Marius Schulz 的博客
- Quokka.js(支持 TypeScript 的 JS 实时暂存器)
- TypeScript 团队的 Type | Treat DEV 系列
- 在 Twitter 上关注的帐户:
- 官方 TypeScript 帐户(@typescriptlang)
- 丹尼尔·罗森瓦瑟 ( @drosenwasser )
- 穆罕默德·赫加齐(@fdsmars)
- 马里乌斯·舒尔茨(@mariusschulz)
- Basarat Ali Syed(@basarat)
- 詹姆斯·亨利(@mrjameshenry)
- 如果我遗漏了您认为应该在此列表中的内容,请告诉我(nick at iamdeveloper dot com)。
总而言之,如果您希望在代码库(智能感知、重构)上快速扩展团队以及通过类型检查捕获愚蠢的错误,那么 TypeScript 是一个不错的选择。
感谢@drosenwasser、@RichSeviora和@nojvek花时间审阅这篇博文。💯🔥
有任何疑问或意见?请在 Twitter 上联系我:@nickytonline。
文章来源:https://dev.to/nickytonline/why-you-might-want-to-consider-using-typescript-6j3