TypeScript--数据类型

181 阅读3分钟

基本数据类型

  • boolean
let isDone: boolean = false;
console.info(isDone)  //false
  • number
let age: number = 20;
console.info(age)  //20
  • string
let name:string="wangcai"
console.info(name)  //wangcai

  • array
let arr1:Array<number>=[1,2,3,]
let arr2:number[]=[4,5,6]
console.info(arr1,arr2)  //[ 1, 2, 3 ] [ 4, 5, 6 ]
  • Tuple:元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同
let info:[string,string,number] = ["xiaowangcai","boy",20]
console.info(info)   //[ 'xiaowangcai', 'boy', 20 ]
// 访问元组
console.info(info[0].substr(4)); //wangcai
console.info(info[2])            //20
  • enum

--默认情况下,从0开始为元素编号。

enum week {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FEIDAY, SATURDAY
}
console.info(week.SUNDAY)   // 0
console.info(week.MONDAY)   // 1

--也可以手动的指定成员的数值.

enum Color1 {Red = 1, Green = 2, Blue = 4}
let c1: Color1 = Color1.Green;
console.info(c1)     //2

--也可以全部都采用手动赋值.

enum Color {Red = 1, Green, Blue }
let c2: Color = Color.Blue;
console.info(c2) //3
  • Any:有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any类型来标记这些变量
let name:any = 123
name = "wangcai"
name = true
name = undefined
console.info(name)  //undefined
  • void:void类型像是与any类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void

--有返回值

function sum(num1:number,num2:number):number{
        return num1+num2;
    }
    console.info(sum(1,2))  //3

--无返回值

function sum(num1:number,num2:number):void{
    console.info(num1+num2);  //3
}
console.info(sum(1,2));  //underfined
  • Null&Undefined:TypeScript里,undefined和null两者各自有自己的类型分别叫做undefined和null。并切他们是任意数据类型的子类型,包括自身.
let a:null = null;
console.info(a)   //null
let b:undefined = undefined;
console.info(b)  //undefined

//默认情况下null和undefined是所有类型的子类型
let age:number = 100;
age = undefined;
console.info(age)  //underfine

let name = "wangcai";
name = undefined;
console.info(name)  //underfine

let c:undefined = null;
console.info(c)   //null

let d:undefined = undefined;
d = null;
console.info(d)  //null
  • Never:类型表示的是那些永不存在的值的类型。 例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never类型,当它们被永不为真的类型保护所约束时.
function sum():never{
   // 如果函数一定要抛出一个错误,那么它的返回值就是一个never
   throw Error("未知错误");
}

非原始数据类型

  • Object:表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。可以用来给形参指定多种数据类型
function sum(x:number|string){
    if(typeof x == "number"){
        console.info(x)
    }else if(x == "string"){
        console.info(x)
    }else{
        console.info(x)
    }
}
sum(666);  //666
sum("wangcai");  //wangcai
sum(null);  //null
sum(undefined);  //undefined

自动推导类型(装箱)

let someValue: any = "hello";
console.info(someValue.length);         //5
console.info(someValue.toUpperCase());  //HELLO

类型断言

类型断言有两种形式。 其一是“尖括号”语法,另一个为as语法。
  • “尖括号”语法:
let someValue1: any = "hello";
let strLength1: number = (<string>someValue1).length;
console.info(strLength1)   //5
  • as语法:
let someValue2: any = "hello";
let strLength2: number = (someValue2 as string).length;
console.info(strLength2)   //5

www.tslang.cn/docs/handbo…