一,TS是什么?
是以JS为基础构建的语言,JS是TS的根TS是JS衍生出来的,它是JS的一个超集超集就是对JS进行了扩展首先TS是完全支持JS的然后在JS的许多基础上增添了许多功能其中最主要的功能是在JS里面引入了类型的改变,也就是让JS从动态类型的语言变成了静态的语言给变量赋予了类型。
1,可以在任何支持JS的平台执行。
2,TS不能被JS解析器直接执行。
3,TS需要编译转为JS。
4,TS完全兼容JS,在TS文件可以直接写JS。
5,TS比JS严格这个严格是可以配置的。
二,TypeScript的优势
- 以JavaScript为基础的构建的语言。
- 可以在任何支持JavaScript的平台中执行。
- 一个JavaScript的超集。
- TypeScript扩展了JavaScript,并添加了类型。
- TS不能被JS解析器直接执行。
- TS需要编译转换为JS。
三,TypeScript增加了什么?
- 类型
- 支持ES新特性
- 添加ES不具备的新特性
- 丰富的配置选项
- 强大的开发工具
四,TS增加了什么?
1.原有类型:
string | number | boolean | array |
null | undefined | symbol | object |
2. 新增类型:
tuple元祖 | enum枚举 | void |
any任意类型 | never |
五,数据类型的定义
1. 常见的数据类型:
let type1:number = 1; //number:只能为数字类型
let type2:Boolean = true; //Boolean:只能为true和false
let type3:string = “字符串”; //string:string:只能为字符串
2.数组(array)
数组有两种定义方式
// 在元素类型后面加上[ ],数组每个元素都为number
let arr:number[ ] = [1, 2];
// 或者使用数组泛型
let arr:Array<number> = [1, 2];
3.元祖(tuple)
元祖类型用来表示已知元素和数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。
let x:[string, number];
x = [‘ Runoob‘, 1]; // 运行正常
x = [1, ‘Runoob’]; // 报错
console.log(x[0]); // 输出 Runoob
4.枚举(enum)
枚举类型用于定义数值集合。有两种不同的定义方式。
1.自定义枚举数值。
enum testEnum = {
Test1 = 1,
Test2 = 2,
Test3 = 4
}
let m:testEnum = testEnum.test2
console.log(testEnum.test1,m) // 1, 2
2.默认数值。
enum Color {Red,Green,Blue}
let c:color = color.Blue;
lonsole.log(c); // 输出 2
5.任意类型(any)
一般用于获取dom节点,或者不知道将获取什么数据类型时使用,可赋值其任意类型的数据。
let a:any = 1
A = '哈哈'
A = [1,2,3]
A = true
6.void
用于标识方法返回值的类型,表示该方法没有返回值。
//定义有返回值的数据时
function method:string(){
Return '哈哈哈哈'
}
// 定义无返回值数据时
function method:boid(){
}
7.never
never是其他类型(包括null和nudefined)的子类型,代表从不会出现的值。常用于抛出异常,以及无限循环的函数的返回值。
function errmethod:never(){
Throw new Error(‘抛出错误’)
}
六,类型推断
如果变量的声明和初始化在同一行则可以省略冒号后的类型,但意思不变。
let a:string='小明';
// 可以简化为
let a = '小明';
// a仍然只能为字符串类型
七,联合类型,即给变量定义多种类型
let b:string | Boolean | number=9
B = '小明'
B = true
B = 2