TypeScript 基本类型(二)

布尔类型(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'. 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值