随着前端技术的不断发展和要求,TS在工作中的地位越来越重要了。TS已经出现很长时间了,但秉着什么时候学都不算晚的原则,还是初步的对TS了解了一下。 TS是JS的超集,对数据的类型进行了规范化,弥补了JS的一些不足。
类型
学习TS,首先要学习它的类型。在原有的number,string等类型上,TS自己还有诸如tuple,enum,unknown,void等。下边就让我们了解一下它们吧。
1.number
定义一个number类型的属性:
let a:number = 10
2.string
定义一个string类型的属性:
let a:string = 'hello'
当然也支持使用模版字符串,模版字符串需要使用反引号包围,并且以${}形式嵌入
3.boolean
定义一个boolean类型
let a:boolean = true
4.array
array类型的可以定义数组中的数据类型,它有两种表现形式
let a:number[]
let a:Array<number>
5.元组(tuple)
元组相当于是有固定长度的数组,可以定义每个数组元素的类型。 当访问已有元素时,可以得到对应的类型
let a:[string,number] = ['w',10]
console.log(a[1].substr)
但是当越界获取的时候,是会使用联合类型:
a[2] = 'name'
这个时候a[2]的类型就是(string | number)
6.枚举(enum)
枚举是组织联变量的一种方式,可以定义一些带名字的常量。当遇到值是数字形式的数据时,可以让数值表达的意义更加明确
1.数字枚举
enum Name{Yang,Wu,Liu}
默认情况下,从0开始为元素编号,这是Name中的值就分别是0,1,2。当然也可以手动指定成员的数值.
2.字符串枚举
字符串枚举需要给每个属性一个初始值,也可以使用另外一个字符串枚举成员进行初始化。当然初始值不一定全部都是字符串,也可以是number等类型。但是枚举一般是表示统一类型的,所以这种形式也就不推荐。
7.any
any表示任意类型,不进行类型检测
let a:any
a='hello'
a=10
any类型的变量可以赋值给一个具有确定类型的变量,会产生隐患
8.unknown
unknown表示类型未知,但是是有类型的。
let a:unknown
与此同时,当你确定知道一个变量的类型,并且需要将unknown类型的值赋予该变量时,可以使用类型断言指定类型
let a:unknown = 'ww'
let b:string = a as string
unknown也可以当作一个中转类型
let a:string = '10'
let b:number = a as unknown as number
9.void
void类型的值可以是null,undefined,多用于函数
let a:void = null
function fn():void {}
执行fn是有结果的:undefined
10.never
never表示没有返回值,函数不会执行到底
function fn():never{
throw new Error('报错')
}
11.object
object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型
let a:{name:string,age?:number}
a = {name:'ww',age:23}
也可以单独进行一个类型声明
type myType = {
name:string,
[propName]:string:any
}
let obj:myType = {
name:'ww',
age:23
}
12.null和undefined
let a:null = null
let b:undefined = undefined
TS不仅有类型,还有接口,抽象类等概念,当然还有TS配置等内容,这些会在之后的文章中体现,本次仅在分享TS基础类型的有关知识点。