一篇缺失的 TypeScript 介绍 ============================================================= **下文是 James Henry([@MrJamesHenry][8])所提交的内容。我是 ESLint 核心团队的一员,也是 TypeScript 布道师。我正在和 Todd 在 [UltimateAngular][9] 平台上合作发布 Angular 和 TypeScript 的精品课程。** > 本文的主旨是为了介绍我们是如何看待 TypeScript 的以及它在加强 JavaScript 开发中所起的作用。 > > 我们也将尽可能地给出那些类型和编译方面的那些时髦词汇的准确定义。 TypeScript 强大之处远远不止这些,本篇文章无法涵盖,想要了解更多请阅读[官方文档][15],或者学习 [UltimateAngular 上的 TypeScript 课程][16] ,从初学者成为一位 TypeScript 高手。 ### 背景 TypeScript 是个出乎意料强大的工具,而且它真的很容易掌握。 然而,TypeScript 可能比 JavaScript 要更为复杂一些,因为 TypeScript 可能向我们同时引入了一系列以前没有考虑过的 JavaScript 程序相关的技术概念。 每当我们谈论到类型、编译器等这些概念的时候,你会发现很快会变的不知所云起来。 这篇文章就是一篇为了解答你需要知道的许许多多不知所云的概念,来帮助你 TypeScript 快速入门的教程,可以让你轻松自如的应对这些概念。 ### 关键知识的掌握 在 Web 浏览器中运行我们的代码这件事或许使我们对它是如何工作的产生一些误解,“它不用经过编译,是吗?”,“我敢肯定这里面是没有类型的...” 更有意思的是,上述的说法既是正确的也是不正确的,这取决于上下文环境和我们是如何定义这些概念的。 首先,我们要作的是明确这些。 #### JavaScript 是解释型语言还是编译型语言? 传统意义上,程序员经常将自己的程序编译之后运行出结果就认为这种语言是编译型语言。 > 从初学者的角度来说,编译的过程就是将我们自己编辑好的高级语言程序转换成机器实际运行的格式。 就像 Go 语言,可以使用 `go build` 的命令行工具编译 .go 的文件,将其编译成代码的低级形式,它可以直接执行、运行。 ``` # We manually compile our .go file into something we can run # using the command line tool "go build" go build ultimate-angular.go # ...then we execute it! ./ultimate-angular ``` 作为一个 JavaScript 程序员(这一刻,请先忽略我们对新一代构建工具和模块加载程序的热爱),我们在日常的 JavaScript 开发中并没有编译的这一基本步骤, 我们写一些 JavaScript 代码,把它放在浏览器的 `