欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TypeScript 基本类型(二)

程序员文章站 2022-03-05 23:22:31
...

布尔类型(boolean)、数据类型(number)、字符串类型(string)定义方式:

var num1:number = 12;

var num2:string = 'ABC'

var num3:boolean = true

注意:定义时必须指定数据类型,且赋值不能改变其类型

数组定义方式

1、[类型 + 方括号」表示法

2、数组泛型: Array<elemType>

let newarr:number[]=[1,2,3,4]

let arr2:Array<number>=[1,2,3,4]

元组类型(tuple),属于数组的一种,可以为数组中的每个项指定数据类型

let arr4:[number,string,number]=[1,'2',3]

枚举类型(enum)

enum 枚举名{

    标识符[=整型常数]

    标识符[=整型类型]

}

enum Status {success=1,error=0,cancal=-1}

let statusVal:Status=Status.success

//console.log(statusVal) //1    若标识符没有值,则返回下标

任意类型(any)

let boxNode:any = document.getElementById('box')   //例如获取节点,修改样式,若不指定类型会报错

boxNode.style.color='green';

//undefined类型和null类型

let num2:number|undefined

//console.log(num2)   //不会报错,直接返回undefined

//当元素值不固定时,可能是number,string,undefined,null时,定义方式如下:

let num3:number|string|null|undefined

num3=110

//console.log(num3)

void类型:void表示没有任何类型,一般用于定义方法的时候没有返回值

function noreturn():void{

    console.log('run')

}

noreturn();

function test():string{ //有返回值时,方法中指定所返回的类型即可

    return 'string'

}

var run = test();

console.log(run);  

 never类型:其他类型(包括了undefined、null类型)的子类型,代表从不会出现的值,never类型的变量只能被never类型所赋值

let neverVal:never;

neverVal=(()=>{

    throw new Error('失败')
 
})();

类型推论:如果没有明确的指定类型,那么 TypeScript 会依照类型推论(Type Inference)的规则推断出一个类型。

let myFavoriteNumber = 'seven';
myFavoriteNumber = 7;   //error TS2322: Type 'number' is not assignable to type 'string'.
//它等价于:
let myFavoriteNumber:string = 'seven';
myFavoriteNumber = 7;


//在TypeScript 2.1 之前,如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 any 类型而完全不被类型检查,TypeScript 2.1 中,编译器会考虑对 myFavoriteNumber 的最后一次赋值来检查类型

let myFavoriteNumber;
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;

联合类型

let num:string|number|null;

num='ABC';

num=20

num=null

num=true   //Type 'true' is not assignable to type 'string | number | null'.

访问联合类型的属性或方法

不确定联合类型的值是哪个类型时,只能访问这个联合类型中所有类型里所有的属性和方法

function getValue(something: string | number): any {

    return something;

}

var g1 = getValue(100)

var g2 = getValue('string')

//var g3 = getValue(true) //报错

联合类型的变量在赋值时,会根据值推断出一个类型

var StudentName:string|number;
StudentName='小明'
console.log(StudentName.length)   //2   字符串类型包含length属性
StudentName=100
//console.log(StudentName.length)   //error TS2339: Property 'length' does not exist on type 'number'.