引言
TypeScript 的重要性大家都知道,让我们一起了解TypeScript的基本类型,告别 AnyScript。
1、Number数字类型
- 对数字的定义很笼统的用number来标识
- 能表示整数、浮点数、正负数
- 与JavaSript一致
const numTmp:number=1
2、String字符串类型
- 可使用单引号、双引号、反引号来引导
- 反引号:`` 可以创建一个字符串模板
- 与JavaSript一致
const strTmp:string="hello"
3、Boolean布尔类型
- 真、假
- 处理逻辑上的判断
- 与JavaSript一致
const boolTmp:boolean=true
4、Array数组类型
- 数组中可以存放任意类型的数据
- JS中数组的宽容度非常大,而TS也很好的继承了这一点
- 在TS中,数组类型可以用静态类型来处理,也可以用any来处理动态类型,后续介绍
const arr1:number[]=[1,2,3],创建一个全是数字类型的数组const arr2:Array<number>=[1,2,3],用number填充泛型数组中每一个元素的类型,同样是创建一个全是数字类型的数组const arr3=[1,2,3],同样是创建一个全是数字类型的数组const arr4=[1,'ddd'],创建了一个(string | number)[]联合(Union)类型数组,后续介绍const arr5:any[]=[1,'add',true],创建了一个可存放任意类型元素的数组,any[]- arr4和arr5的区别是:arr4只能存放数字和字符串的元素,而arr5可存放任意类型元素
5、Tupple类型
- 元组类型
- 元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。
const person:[number,string]=[1,'hello']
person[0]='ddd', //会报错,数组第一位元素必须是number类型
person[1]=1 //同理,也会报错
person[2]=1, //会报错,数组长度有且只有两位,长度不可改变
6、Union类型
- 联合类型
- 同时支持多个不同类型,不同类型之间用 | 连接
const union1:string | number,可存放string类型和number类型的元素const union2:string | number | boolean | string[],同理let union3:0 | 1 | 2,union3是一个数组类型的联合,确定了取值范围,只能在0,1,2中选择取值
7、Literal类型
- 字面量类型
const number3=3,创建了一个number3类型的常量,它的特定数据就是它自己的类型,这就是字面量类型
8、Enum类型
- 枚举类型
enum Color{
pink,
green,
blue
}
let color=Color.blue //值为2
enum Color1{
pink=5,
green,
blue
}
let color1=Color1.blue //值为7
enum Color2{
pink="pink",
green="green",
blue=2
}
let color2=Color2.green //值为green
9、Any类型
- 任意类型,不确定使用什么类型的时候可使用,很强的灵活性
let tmp:any='hello'
tmp=666
tmp=trye
tmp={}
tmp=[]
tmp() //开发环境不会报错,编译会报错
tmp.toUpperCase() //开发环境不会报错,编译会报错
10、Unknown类型
- 未知类型,与any非常类似
- 不保证类型,但保证类型安全性
let tmp:unknown='hello'
tmp=666
tmp=trye
tmp={}
tmp=[]
tmp() //开发环境会报错
tmp.toUpperCase() //开发环境会报错
if(typeof tmp === 'function')
tmp() //不会报错
if(typeof tmp === 'string')
tmp.toUpperCase //不会报错
11、Void类型
- 用于标识方法返回值的类型,表示该方法没有返回值
function hello(): void {
console.log("Hello Runoob");
}
12、Undefined类型
- 于初始化变量为一个未定义的值
function hello(): undefined {
console.log("Hello Runoob");
return;
}
13、Nerver类型
- never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值
- 一个函数永远执行不完,这就是nerver的本质
function whileLoop():nerver {
while(true){
console.log('hello')
}
}