typescript类型介绍

布尔值(Boolean),数字(Number),字符串(String),数组(Array),元组(Tuple),,枚举(Emum),任何类型(Any),无返回类型(Void),Null 和 Undefined,Never,Object

布尔值

最基本的数据类型,有true/false两个值。

  1. let isDone: boolean = false;

数字

在TypeScript里的所有数字都是浮点数,浮点数的类型为number,还支持十进制和十六进制字面量

  1. let decLiteral: number = 6000;//普通数值

字符串

表示为文本类型,同js一样可以使用带引号或者双引号表示

  1. let nam:string ='base'

作为模板模板字符串

  1. let name:string = 'jack'
  2. let age:number = 30;
  3. let jackinfo:string =`my name is ${name},I'll be ${age} years old next month`

数组

在TypeScript有两种表示方法定义数组

  • 第一种方式:普通

    1. let number:number[] =[1,2,3]
  • 第二种:数组泛型Array<元素类型>

    1. let list:Array<number> = [1,2,3]
  • 扩展一:对象数组表示方法

    1. let listobj: Array<{ name: string age: number}>
    2. = [{
    3. name: '',
    4. age: 1
    5. }]
    6. 这里表示listobj是一个数组,每个数组里面都是一个对象,每个对象里面都有两个属性,一个是name,类型为string,age为数值行。
  • 扩展二:对象数组表示方法

    1. interface obj {
    2. name: string
    3. age: number
    4. }
    5. let listobj: obj[] = [{
    6. name: '',
    7. age: 1
    8. }]
    9. 与上面的方法是同样的效果,不过是形式变化而已, interface 是一个接口

    元组

    元组表示一个已知元素数量和类型的数组,各元素的类型不必相同。

    1. let list:[string,number,boolean]
    2. list =['',1,true] //数组的类型必须和list 的类型一致,否则报错
    3. list =[1,1,true] //类型不一致报错

    枚举

    emu 是对javaScript标准数据类型的一个补充

    1. enum Color { red,green,blue}
    2. let c:Color = Color.green ==>2
    3. c的赋值必须是 Color其中的一个,否则报错

    默认情况下,从0开始为元素编号。 你也可以手动的指定成员的数值。

    1. enum Color {Red, Green = 2, Blue = 4}
    2. let c: Color = Color.Green; -->输出结果为:2
    3. let c1: Color = Color.Red; --> 输出结果为:0 因为0没有改变为默认

    也可以通过枚举值来得到他的名字

    1. enum Color {Red , Green, Blue =4}
    2. let c1: string = Color[0]; //拿到枚举值为0的名字 ==》Red
    3. let c2: string = Color[4];//拿到枚举值为4的名字 ==》Blue

    Any

    any 表示为任何类型,使用场景为不知道用户输入类型时使用,注意:尽量不要使用,因为使用了any 表示输入任何数据,编译器都不会检查出问题,只有在运行时才能检查出问题。

    1. let numbers:any =4 //ok
    2. let numbers:any ='4' //ok
    3. let numbers:any ={name:'4'} //ok
    4. numbers.oFixed() // error 因为numbers并没有此方法

    Void

    void类型像是与any类型相反,它表示没有任何类型,表示没有任何返回值

    1. function name():void {
    2. console.log("This is my warning message");
    3. }

    只能为它赋予undefined和null

    1. let sd: void = undefined //ok
    2. let sds: void = null //ok 指定--strictNullChecks 为flase 生效,为true时报错

    Null 和 Undefined

    默认情况下null和undefined是所有类型的子类型。 就是说你可以把 null和undefined赋值给number类型的变量。
    但是,当你指定了—strictNullChecks标记,null和undefined只能赋值给void和它们各自

    1. let u: undefined = undefined; //ok
    2. let n: null = null; //ok

    Never

    表示永远不存在值得的类型,never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never。 ```typescript // 返回never的函数必须存在无法达到的终点 function error(message: string): never { throw new Error(message); } // 推断的返回值类型为never function fail() { return error(“Something failed”); }

// 返回never的函数必须存在无法达到的终点(死循环) function infiniteLoop(): never { while (true) { } }

  1. <a name="6mQyX"></a>
  2. ### Object
  3. object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型
  4. ```typescript
  5. function names(params:object ) {}
  6. names({a:'1'})
  7. 必须如对象才能正常

类型断言

有时候我们会比编译器更了解自己在做什么,所以这时候就需要用到类型断言
写法一:<> 尖括号语法

  1. let someValue: any = "this is a string"; //初始类型为any 类型实际上为字符类型
  2. let strLength: number = (<string>someValue).length;//此处表示将 someValue断言为字符串类型,然后拿到length属性

写法二: as 语法

  1. let someValue: any = "this is a string"; //初始类型为any 类型实际上为字符类型
  2. let strLength: number = (someValue as string).length;;//此处表示将 someValue断言为字符串类型,然后拿到length属性