此博客都是借鉴胡桓铭作者所写的TypeScript的实战指南
Hello TypeScript
微软认为Javascript只是一门脚本语言,设计理念简单,缺乏对类与模块的支持,并非真正用于开发大型web应用,后来,TypeScript就在新时代中诞生了。它的主要特点如下:
- 免费开源,使用Apache授权协议
- 基于ECMAScript标准进行扩展,它是js的超集
- 文件扩展名为ts
- 编译时检查,不污染运行时
准备环境
1、安装Node.js
2、npm和Yarn
其中,Yarn也是npm的注册源获取模块的CLI客户端,它存在的目的就是为了解决团队使用npm面临的少数问题,比如依赖版本的锁定、并行安装以及文案输出。
npm install -g yarn | |
---|---|
进行安装。但是,建议通过Yarn的官方要求进行安装
安装TypeScript
npm install -g typescript | |
---|---|
我们还会安装TypeScript的运行时ts-node
npm install -g ts-node | |
---|---|
ts-node提供了运行TypeScript的代码的能力
开发工具-VS code
访问vscode的官网,根据当前系统下载安装包,安装之后,在安装shell命令。在搜索框里面输入install ‘code’,选择第一个选项,即可让code成为命令,这样可使用code test.js或者code ./folder
第一个文件的诞生
我们可以新建文件,注意后缀名为ts,我们在里面写入
console.log(“Hello World”)
打开终端(terminal),输入 ts-node hello.ts
这句话就漂亮地输出来了。
类型和函数
基本类型
typeScript 与javscript的基本类型基本类似,boolean类型如下所示:
let areyouok :boolean=true
声明数字的时候:
let a:number=6
let str:string=“xiaoming”,这里也可使用模板字符串,就用反引号将字符串包起来,用大括号来插入表达式。
数组的表达方式有两种:1、let arr :number[]=[1,2,3]
2、let arr Array<number>=[1,2,3]
如何声明变量
使用let和const,与es6使用方法一致
创建泛型函数
function hello<T>(arg:T):T{
return arg
}
这样可以控制函数的参数类型
如何使用泛型函数:使用尖括号的方式进行表达
let output=hello<string>(‘hello tpescript’)
使用类型推断。这个会根据传入的参数自动确定T的类型
let output=hello(‘hello typescript’)
但是,如果你使用我们之前创建的泛型函数,直接获取arg的length会直接报错,因为他们有该属性,我们可以通过泛型数组来表达这种情况。
function hello<T>(arg:T[]):T{
console.log( arg.length);
return arg;
}
还有另外一种方式,使用Array来表达数组,如下。
function hello<T>(arg:Array<T>):Array<T>{
}
枚举类型
TypeScript 有数字枚举和字符串枚举。
对于数字枚举而言,第一个枚举的变量值如果赋值为1,其他变量的值就递增,当然,你也可以手动输入其他成员的值。如果第一个值并未赋值,默认为0,注意,枚举类型的值必须确定。反向映射是它的技巧,属性值获取值,值获取属性名。
对于字符串枚举,它不同于数字枚举,它其中的每一个成员都必须是字符串字面量,都必须手动初始化。它不含有反向映射的技巧。
高级类型
- interface,提供了表达字典的能力。
- 交叉类型,多个字典类型的组合就成了一个新的字典类型,在interface中,交叉是并集。
- 联合类型,一个变量可以是几种类型之一,我们用竖线分割每个类型,在interface中,联合是交集。
- 类型保护与区分类型,采用联合类型后,如果调用函数,不能只调用交集中的函数,所以要使用类型断言来操作,直接进行强行推断类型。但是提供的保护机制可以只写一段代码即可,如下.
function isTeacher(person:Teacher|Student):person is Teacher{ return (\<Teacher>person).teach !==undefined; }