初识TS-基础类型

184 阅读3分钟

随着前端技术的不断发展和要求,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表示非原始类型,也就是除numberstringbooleansymbolnullundefined之外的类型

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基础类型的有关知识点。