typescript之基础类型
基础类型分为:数字、字符串、数组、元组、枚举、Any、Object、Null、Undefined、Never、Void
各种类型写法如下:
1.数字(number)
let num:number = 1;
2.字符串(string)
let str:string = 'test'
3.数组
多种写法
1.类型加中括号, type+[],例:
let arr:number[]=[1,2,3] // 纯数字数组
2. 数组泛型Array<number>
let arr:Array<number> = [1,2,3]
4.元组
表示一个已知元素数量和类型的数组
let yArr:['string',number] = [ 'test', 1 ]; 表示有两个已知类型的成员,注意:可只声明,后续通过下标赋值
ps:官网上有说 越界的元素(即通过例:yArr[2]=1或push的方式添加元素)测试报错,暂时保留意见
5.Any
未指定类型,且通过类型推论得不到类型的情况被视为any类型,
let a; // 未声明类型,且类型推论得不到结果的情况视为any类型,any类型不经过类型检测
6.枚举
enum关键字声明,后续详细说明
7.Object
object
表示非原始类型,也就是除number
,string
,boolean
,symbol
,null
或undefined
之外的类型。
8.Void
与any相反,表示没有任何类型,声明void类型没什么用,只能给它赋值undefined、null,通常用它来表示函数没有返回值:
function fn():void{
}
9.Null和Undefined
TypeScript里,undefined
和null
两者各自有自己的类型分别叫做undefined
和null
。 和 void
相似,
它们的本身的类型用处不是很大,默认情况下null
和undefined
是所有类型的子类型。 就是说你可以把 null
和undefined
赋值给number
类型的变量。
10.Never
never
类型表示的是那些永不存在的值的类型。
类型声明相关:
类型推论: 当未明确指出类型时,ts会根据初始值来进行推论,例如:
let num = 1;
此时未明确给出num的类型,但ts会根据你初始值为数字类型而推论出num的类型为number类型,当再次赋值为其他类型时就会报错
num = ‘test’; //error! Type '"test"' is not assignable to type 'number'
如果声明时未赋值,let num;此时ts无法推论出num的类型,将会认为它是any类型,后面将不会对它进行任何类型检测
类型断言:告诉编译器 “把这个变量当作xx类型来处理”,例如: