不是吧! TypeScript基本类型只用any?!

539 阅读3分钟

引言

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')
    }
}