TypeScript

作者:高天阳

邮箱:13683265113@163.com

更改历史

* 2019-07-08        高天阳    初始化文档

简介与优势

简介

TypeScript是由微软开发的,一个JavaScript超集,遵循ES6标准

ES5、ES6、JavaScript、TypeScript相互关系是什么?

ES是客户端脚本语言的规范,ES5、ES6是这个规范的不同版本,JavaScript、TypeScript是两种客户端脚本语言, JavaScript实现了ES5规范,TypeScript实现了ES6规范

优势

  • 支持ES6规范(15年发布)

  • 强大的IDE支持(错误提示、语法提示、重构)

  • Angular2的开发语言

微软+google

环境配置

  • 什么是compiler?为什么需要compiler?

compiler是编译器,把TypeScript编译为JavaScript,使用原因类似babel的使用

编写ts文件后,使用命令行,执行tsc XX.ts即可在同目录下获得XX.js文件

例如编写类

当我们使用IDE时,其会充当compiler,帮助我们进行编译,并把ts文件变更为js文件

概念、语法和特性

字符串新特性

多行字符串

字符串模板

自动拆分字符串

参数新特性

参数类型:在参数名称后面使用冒号来制定参数的类型

默认参数:在参数声明后面用等号来指定参数的默认值

可选参数:在方法的参数声明后面用问号来标明此参数为可选参数

函数新特性

Rest and Spread操作符:用来声明任意数量的方法参数

typescript暂不支持的ES6语法

generator函数:控制函数的执行过程,手工暂停和恢复代码执行

destructuring析构表达式:通过表达式将对象或数组拆解成任意数量的变量

从对象中取值

ES5

ES6

从数组中取值

析构表达式的好处 当我们需要从一个对象的属性或者数组的元素里 初始化本地变量时 我们可以写更少的代码

表达式和循环

箭头表达式:用来声明匿名函数,消除传统匿名函数的this指针问题

箭头表达式的最大作用不是简化代码 而是解决this关键字的指向问题 ES5的this是调用时的this ES6箭头表达式的this是声明时的this

forEach(), for in 和 for of:

补充

for of循环可以用于任何具有遍历器Iterator的对象上 常见的集合如:数组、map、set以及字符串内置了Iterator(迭代器)

如何让对象可以被for of 遍历,当然是给它添加遍历器,代码如下:

面向对象特性

TypeScript-类(class)

类是TypeScript的核心,使用TypeScript开发时,大部分代码都是写在类里面的

这里会介绍类的定义,构造函数,以及类的继承

类的定义

访问控制符:控制类的属性是否可以在外部访问到

public: (公共的) 可以在内外访问(默认值)

private: (私有的) 只可以在内部访问

protected: (受保护的) 可以在内部和继承的子类访问

类的构造函数

构造函数constructor在类的实例化时被自动调用

构造函数的使用场景

例如在创建Person类的时候,name必须被指定

简化可写

注意构造函数的访问控制符不可省略

构造函数有、无访问控制符含义不同

类的继承

extends 声明类的继承关系 继承关系是一种'是'的关系

super 调用父类属性

TypeScript-泛型(generic)

参数化的类型,一般用来限制集合的内容

指定数组只能放某个类型的元素 不能放其他类型的元素

TypeScript-接口(Interface)

用来建立某种代码约定,使得其他开发者在调用某个方法或创建新的类时必须遵循接口所定义的代码约定

用接口声明属性

用接口声明方法

在接口里声明一个方法 所有声明实现接口的类 必须实现此方法

TypeScript-模块(Module)

模块可以帮助开发者将代码分割为可重用的单元。开发者可以自己决定将模块中的哪些资源(类、方法、变量)暴露出去供外部使用, 哪些资源只能在模块内部使用。

在TypeScript中 一个文件就是一个模块 导出:export 导入:import 通过导出导入 规定本模块对外暴露什么以及需要其他模块提供什么

a.ts

b.ts

一个模块既可以导入 属性、方法、类 同时可以导出 两者相互不影响

TypeScript-注解(annotation)

注解为程序的元素(类、方法、变量)加上更直观更名了的说明,这些说明信息与程序的业务逻辑无关,而是供指定的工具框架使用。

上图中,用angular2框架写的程序,其中Component是下面AppComponent的一段注解 这个注解本身是由angular2框架所提供的,注解中的一些属性会告诉angular2框架怎么处理AppComponent这个类

可以理解为,当angular2框架实例化AppComponent这个类时,angular2框架应当加载属性中提供的html及css

TypeScript-类型定义文件(*.d.ts)

类型定义文件用来帮助开发者在TypeScript中使用已有的JavaScript的工具包

如:JQuery

手动获取类型定义文件DefinitelyTyped项目

工具获取类型定义文件typings项目

遇到jq无法引用的问题 通过tsconfig.json配置解决 此配置还加了未使用报错

TS的tsconfig.json配置 tsconfig.json编译选项 Typings能否基于package.json自动安装d.ts?

TypeScript总结

  • 介绍了TypeScript的基本概念和优势

  • 介绍了如何搭建TypeScript开发环境

  • 介绍了TypeScript的的语法和特性

最佳实践

参考资料

Last updated

Was this helpful?