TypeScript 中的数据类型

TypeScript 中的数据类型

一、布尔值类型

typescript 中的布尔类型可以被赋值为 true 或者 false。

// boolean
let a: boolean = true;
let b: boolean = false;

二、数字类型

​ typescript 中的数字类型可以被赋值为数字、NaN,Infinity、还有进制数字。

//number
let a: number = 10;
let b: number = NaN;
let c: number = Infinity;
let d: number = 0xA12;   //十六进制数字
let e: number = 0b1010101;  //二进制数字
let f: number = 0o75;  //八进制数字

三、字符串类型

​ typescript 中的字符串类型可以用单引号,也可以用双引号括起来,还可以用 es6 中的模板字符串。

// string
let str: string = "这是一个字符串"
let str1: string = '这是一个字符串'
let str2: string = `hello 这是一个模板字符串${a}`

四、数组类型

​ typescript 中的数组类型有两种声明方式:

// Array<数据类型>
let arr: Array<number> = [1, 2, 3, 4];
// 数据类型[]
let arr1: number[] = [1, 2, 3, 4];

上面这两种写法都限制了数组元素为 number (或者其他某种固定)类型,若想限制多个类型,可以设定为 any 类型,也可以使用接口进行限制:

interface NumberArray {

[index:number]: number;

}

let arr: NumberArray = [1,2,3,4]

//NumberArray 表示:只要 index 的类型是 number,那么arr里元素的类型必须是 number。

五、元祖类型

​ typescript 中的元组数据类型是数组类型中的一种,元组的元素可以通过下标进行访问。通过索引得到元组元素并修改其中的内容时,只能改变该索引位置定义的数据类型。

// 元组(Tuple)
let arr: [number, string] = [1, 'a'];

上面代码中,定义了一个 arr 元组,其中 arr[0]必须是数字类型,arr[1]必须是字符串类型。当我们要修改索引 0 的元素时,只能将其修改为数字类型的,而不能是其他类型的。

​ 注意:当我们访问修改的元素超过元组的长度时,该元素默认的类型可以是该索引前面的所有数据类型。如我们访问了 arr[2]此时我们即可以将其赋值为字符串,又可以将其赋值为数字。

六、枚举类型

通过 enum 声明 ​ typescript 中的枚举数据类型,限制一个属性的取值

enum Gender{
    male = 1,
    female = 0,
    unknow = -1
}
let gender: Gender = Gender.male;

如果标识符没有赋值 它的值就是下标

enum Color {blue,red,'orange'};
var c:Color=Color.red;
console.log(c);   //1
enum Color {blue,red=3,'orange'};
var c:Color=Color.red;
console.log(c);   //3
var c:Color=Color.orange;
console.log(c);   //4

七、任意类型

​ typescript 中 any 类型允许我们将变量赋值任意类型的数据。

let a: any = 10;
a = "abc";
a = [];

八、undefined 和 null 类型

ypescript 中的 undefined 数据类型只可以赋值为 undefined,null 类型只可以赋值为 null。根据需要可以将某个变量同时定义多种类型:

let num : number | undefined | null

九、void 类型

​ typescript 中的 void 空值类型只能赋值为 undefined。

let a: void = undefined;

一般可用于一个方法没有返回值的情况

    function handle():number{
        console.log(1)
    }
    handle()   //没有返回值,会报错


        function handle():void{
        console.log(1)
    }
        handle()   //定义为void类型 没有返回值 正确

十、never 类型

never 类型一般用在不可能返回内容的函数的返回值类型设置。一般将变量设置为 never 类型没有意义。never 需要用在没有尽头的函数,像死循环函数,像报错函数。

function test(): never{
   while (true) {
       }
}
let a:never;
a(()=>{
    throw new Error('错误')
})()

类型断言

​ 当我们明确的知道该变量的类型的时候,我们可以使用 <数据类型>的方式告诉 typescript 该变量是什么类型。类型断言常常用在我们需要调用某种变量特有的方法时,比如我们定义了一个 any 类型的 stri 变量后先赋值为字符串,然后我们需要调用字符串的 length 属性获取字符串的长度,此时我们可以通过类型断言,告诉 typescript 变量 stri 是字符串类型,我们才可以调用 length 属性

// 类型断言
let str: any = "abc";
let len: number = (<string>str).length;
posted on 2021-05-13 15:37  白日梦我ᙆzZ  阅读(477)  评论(0)    收藏  举报