typescript类型介绍
布尔值(Boolean),数字(Number),字符串(String),数组(Array),元组(Tuple),,枚举(Emum),任何类型(Any),无返回类型(Void),Null 和 Undefined,Never,Object
布尔值
最基本的数据类型,有true/false两个值。
let isDone: boolean = false;
数字
在TypeScript里的所有数字都是浮点数,浮点数的类型为number,还支持十进制和十六进制字面量
let decLiteral: number = 6000;//普通数值
字符串
表示为文本类型,同js一样可以使用带引号或者双引号表示
let nam:string ='base'
作为模板模板字符串
let name:string = 'jack'let age:number = 30;let jackinfo:string =`my name is ${name},I'll be ${age} years old next month`
数组
在TypeScript有两种表示方法定义数组
第一种方式:普通
let number:number[] =[1,2,3]
第二种:数组泛型Array<元素类型>
let list:Array<number> = [1,2,3]
扩展一:对象数组表示方法
let listobj: Array<{ name: string age: number}>= [{name: '',age: 1}]这里表示listobj是一个数组,每个数组里面都是一个对象,每个对象里面都有两个属性,一个是name,类型为string,age为数值行。
扩展二:对象数组表示方法
interface obj {name: stringage: number}let listobj: obj[] = [{name: '',age: 1}]与上面的方法是同样的效果,不过是形式变化而已, interface 是一个接口
元组
元组表示一个已知元素数量和类型的数组,各元素的类型不必相同。
let list:[string,number,boolean]list =['',1,true] //数组的类型必须和list 的类型一致,否则报错list =[1,1,true] //类型不一致报错
枚举
emu 是对javaScript标准数据类型的一个补充
enum Color { red,green,blue}let c:Color = Color.green ==>2c的赋值必须是 Color其中的一个,否则报错
默认情况下,从0开始为元素编号。 你也可以手动的指定成员的数值。
enum Color {Red, Green = 2, Blue = 4}let c: Color = Color.Green; -->输出结果为:2let c1: Color = Color.Red; --> 输出结果为:0 因为0没有改变为默认
也可以通过枚举值来得到他的名字
enum Color {Red , Green, Blue =4}let c1: string = Color[0]; //拿到枚举值为0的名字 ==》Redlet c2: string = Color[4];//拿到枚举值为4的名字 ==》Blue
Any
any 表示为任何类型,使用场景为不知道用户输入类型时使用,注意:尽量不要使用,因为使用了any 表示输入任何数据,编译器都不会检查出问题,只有在运行时才能检查出问题。
let numbers:any =4 //oklet numbers:any ='4' //oklet numbers:any ={name:'4'} //oknumbers.oFixed() // error 因为numbers并没有此方法
Void
void类型像是与any类型相反,它表示没有任何类型,表示没有任何返回值
function name():void {console.log("This is my warning message");}
只能为它赋予undefined和null
let sd: void = undefined //oklet sds: void = null //ok 指定--strictNullChecks 为flase 生效,为true时报错
Null 和 Undefined
默认情况下null和undefined是所有类型的子类型。 就是说你可以把 null和undefined赋值给number类型的变量。
但是,当你指定了—strictNullChecks标记,null和undefined只能赋值给void和它们各自let u: undefined = undefined; //oklet 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) { } }
<a name="6mQyX"></a>### Objectobject表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型```typescriptfunction names(params:object ) {}names({a:'1'})必须如对象才能正常
类型断言
有时候我们会比编译器更了解自己在做什么,所以这时候就需要用到类型断言
写法一:<> 尖括号语法
let someValue: any = "this is a string"; //初始类型为any 类型实际上为字符类型let strLength: number = (<string>someValue).length;//此处表示将 someValue断言为字符串类型,然后拿到length属性
写法二: as 语法
let someValue: any = "this is a string"; //初始类型为any 类型实际上为字符类型let strLength: number = (someValue as string).length;;//此处表示将 someValue断言为字符串类型,然后拿到length属性
