typescript学习入门(一)

183 阅读4分钟

什么是 TypeScript

官网[1]对于typescript的描述是:
  TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale。
  TypeScript 是一种基于 JavaScript 的强类型编程语言,可为您提供任何规模的更好的工具。

  • TypeScript简称ts。
  • TS和JS之间的关系其实就是Less/Sass和CSS之间的关系,就像Less/Sass是对CSS进行扩展一样, TS也是对JS进行扩展,就像Less/Sass最终会转换成CSS一样, 我们编写好的TS代码最终也会换成JS。
  • TypeScript是JavaScript的超集,因为它扩展了JavaScript,有JavaScript没有的东西。硬要以父子类关系来说的话,TypeScript是JavaScript子类,继承的基础上去扩展。

TypeScript 的特性

类型系统

从名字TypeScript来看,其核心是type-类型是其最核心的特征。 JavaScript是一门非常灵活的编程语言。

  • 它没有类型约束,一个变量可能初始化时是字符串,过一会儿又被赋值为数字。
  • 由于隐式类型转换的存在,有的变量的类型很难在运行前就确定。
  • 基于原型的面向对象编程,使得原型上的属性或方法可以在运行时被修改。
  • 函数是 JavaScript 中的一等公民[2],可以赋值给变量,也可以当作参数或返回值。 JavaScript的这种灵活性也带来了缺点,就是使得JavaScript的代码质量参差不齐,维护成本很高,运行时错误多,而 TypeScript 的类型系统,在很大程度上弥补了 JavaScript 的缺点。

TypeScript是静态类型

类型系统按照【类型检查的时机】来分类,可以分为静态类型动态类型

  • 动态类型:是指在运行时才会进行类型检查,这种语言的类型错误往往会导致运行的错误,JavaScript是一门解释型语言,没有编译阶段,所以它是动态类型,
let foo = 1;
foo.split(' ');
// Uncaught TypeError: foo.split is not a function
// 运行时会报错(foo.split 不是一个函数),造成线上 bug
  • 静态类型:是指编译阶段就能确定每个变量的类型,这种语言的类型错误往往会导致语法错误。TypeScript在运行前需要先编译成JavaScript,而在编译阶段就会进行类型检查,所以TypeScript是静态类型,这段TypeScript代码在编译阶段就会报错:
let foo: number = 1;
foo.split(' ');
// Property 'split' does not exist on type 'number'.
// 编译时会报错(数字没有 split 方法),无法通过编译

TypeScript是弱类型

类型系统按照 【是否允许隐式类型转换】来分类,可以分为强类型弱类型
以下这段代码不管是在 JavaScript 中还是在 TypeScript 中都是可以正常运行的,运行时数字 1 会被隐式类型转换为字符串 '1',加号 + 被识别为字符串拼接,所以打印出结果是字符串 '11'

console.log(1 + '1');
// 打印出字符串 '11'

TypeScript 是完全兼容 JavaScript 的,它不会修改 JavaScript 运行时的特性,所以它们都是弱类型

适用于任何规模

TypeScript 非常适用于大型项目——这是显而易见的,类型系统可以为大型项目带来更高的可维护性,以及更少的 bug。 TypeScript同样也适用于小型项目因为他有【类型推论】,大部分类型都不需要手动声明了,增强了编辑器(IDE)的功能,提供了代码补全、接口提示、跳转到定义、代码重构等能力,TypeScript 可以和 JavaScript 共存,这意味着 JavaScript 项目能够渐进式的迁移到 TypeScript。TypeScript拥有活跃的社区,大多数常用的第三方库都提供了类型声明,TypeScript等。

搭建TypeScript环境

安装TypeScript

npm i -g typescript

创建一个 tsconfig.json 文件

tsc --init
//初始化tsconfig.ts文件

TypeScript 使用 tsconfig.json 文件作为其配置文件,当一个目录中存在 tsconfig.json 文件,则认为该目录为 TypeScript 项目的根目录。 通常 tsconfig.json 文件主要包含两部分内容:指定待编译文件定义编译选项

运行一个ts文件。

全局安装了ts后,我们可以在任何一个地方执行tsc命令。 编译一个ts文件则

tes hello.ts 

如果有运行失败