前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航

Typescript总结篇(二)

首页
2018-12-30 12:30:14
Front-End
TypescriptJavascript

# 一、简介

# 1.1 什么是 TypeScript

  • TypeScript 是 JavaScript 的一个超集,主要提供了类型系统和对 ES6 的支持
  • TypeScript 是由微软开发的一款开源的编程语言
  • TypeScript 是 Javascript 的超级,遵循最新的 ES6、Es5 规范。TypeScript 扩展了 JavaScript 的语法
  • TypeScript 更像后端 java、C#这样的面向对象语言可以让 js 开发大型企业项目

# 1.2 为什么选择 TypeScript

Typescript和es6、es5关系

TypeScript 增加了代码的可读性和可维护性

  • 类型系统实际上是最好的文档,大部分的函数看看类型的定义就可以知道如何使用了
  • 可以在编译阶段就发现大部分错误,这总比在运行时候出错好
  • 增强了编辑器和 IDE 的功能,包括代码补全、接口提示、跳转到定义、重构等

TypeScript 非常包容

  • TypeScript 是 JavaScript 的超集,.js 文件可以直接重命名为 .ts 即可
  • 即使不显式的定义类型,也能够自动做出类型推论
  • 可以定义从简单到复杂的几乎一切类型
  • 即使 TypeScript 编译报错,也可以生成 JavaScript 文件
  • 兼容第三方库,即使第三方库不是用 TypeScript 写的,也可以编写单独的类型文件供 TypeScript 读取

TypeScript 拥有活跃的社区

  • 大部分第三方库都有提供给 TypeScript 的类型定义文件
  • Google 开发的 Angular2 就是使用 TypeScript 编写的
  • TypeScript 拥抱了 ES6 规范,也支持部分 ESNext 草案的规范
  • 最新的 Vue 、React 也可以集成 TypeScript

TypeScript 的缺点

  • 有一定的学习成本,需要理解接口(Interfaces)、泛型(Generics)、类(Classes)、枚举类型(Enums)等前端工程师可能不是很熟悉的概念
  • 短期可能会增加一些开发成本,毕竟要多写一些类型的定义,不过对于一个需要长期维护的项目,TypeScript 能够减少其维护成本
  • 集成到构建流程需要一些工作量
  • 可能和一些库结合的不是很完美

# 1.3 安装 TypeScript

typescript 安装

npm i typescript -g
@前端进阶之旅: 代码已经复制到剪贴板

全局安装完成后,我们新建一个hello.ts的ts文件

// hello.ts内容
let a = "poet"
@前端进阶之旅: 代码已经复制到剪贴板

接下来我们在命令行输入tsc hello.ts来编译这个ts文件,然后会在同级目录生成一个编译好了的hello.js文件

// hello.js内容
var = "poet"
@前端进阶之旅: 代码已经复制到剪贴板

那么我们每次都要输tsc hello.ts命令来编译,这样很麻烦,能否让它自动编译?答案是可以的,使用vscode来开发,需要配置一下vscode就可以。

首先我们在命令行执行tsc --init来生成配置文件,然后我们在目录下看到生成了

fe
  • 一、简介
    • 1.1 什么是 TypeScript
    • 1.2 为什么选择 TypeScript
    • 1.3 安装 TypeScript
    • 1.4 Hello TypeScript
  • 二、基础
    • 2.1 原始数据类型
      • 2.1.1 布尔值
      • 2.1.2 数值
      • 2.1.3 字符串
      • 2.1.4 空值
      • 2.1.5 Null 和 Undefined
    • 2.2 任意值Any
    • 2.3 类型推论
    • 2.4 联合类型
    • 2.5 对象的类型——接口
      • 2.5.1 简单例子
      • 2.5.2 可选属性
      • 2.5.3 任意属性
      • 2.5.4 只读属性
    • 2.6 数组的类型
      • 2.6.1「类型 + 方括号」表示法
      • 2.6.2 数组泛型
      • 2.6.3 用接口表示数组
      • 2.6.4 any 在数组中的应用
      • 2.6.5 类数组
    • 2.7 函数的类型
      • 2.7.1 函数声明
      • 2.7.2 函数表达式
      • 2.7.3 用接口定义函数的形状
      • 2.7.4 参数默认值
      • 2.7.5 剩余参数
      • 2.7.6 函数重载
    • 2.8 类型断言
    • 2.9 声明文件
      • 2.9.1 声明(declare)语句
      • 2.9.2 声明文件(约定.d.ts后缀)
      • 2.9.3 第三方声明文件
    • 2.10 内置对象
      • 2.10.1 ECMAScript 的内置对象
      • 2.10.2 DOM 和 BOM 的内置对象
      • 2.10.3 TypeScript 核心库的定义文件
      • 2.10.4 用 TypeScript 写 Node.js
  • 三、进阶
    • 3.1 类型别名
    • 3.2 字符串字面量类型
    • 3.3 元组
      • 3.3.1 简单的例子
      • 3.3.2 越界的元素
    • 3.4 枚举
      • 3.4.1 简单的例子
      • 3.4.2 手动赋值
      • 3.4.3 常数项和计算所得项
      • 3.4.4 常数枚举
      • 3.4.5 外部枚举
    • 3.5 类
      • 3.5.1 类的概念
      • 3.5.2 public private 和 protected
      • 3.5.3 抽象类
      • 3.5.4 类的类型
    • 3.6 类与接口
      • 3.6.1 类实现接口
      • 3.6.2 接口继承接口
      • 3.6.3 接口继承类
      • 3.6.4 混合类型
    • 3.7 泛型
      • 3.7.1 简单的例子
      • 3.7.2 多个类型参数
      • 3.7.3 泛型约束
      • 3.7.4 泛型接口
      • 3.7.5 泛型类
      • 3.7.6 泛型参数的默认类型
    • 3.8 声明合并
      • 3.8.1 函数的合并
      • 3.8.2 接口的合并
      • 3.8.3 类的合并
  • 四、工程
    • 4.1 tsconfig.json
    • 4.2 TypeScript 编译
  • 五、一些例子演示
    • 5.1 定义ajax请求数据接口
    • 5.2 函数类型接口-对方法约束
    • 5.3 可索引接口:数组、对象的约束(不常用)
      • 5.3.1 可索引接口-对数组的约束
      • 5.3.2 可索引接口-对对象的约束
      • 5.3.3 类类型接口:对类的约束
    • 5.4 接口的扩展
    • 5.5 泛型类接口
      • 5.5.1 泛型类 泛型方法
      • 5.5.2 泛型接口
  • 六、更多参考

← Typescript+React模板搭建(三)Typescript基础及结合React实践(一) →