Typescript 的数据类型

Typescript,就是给 JavaScript 加上了类型系统。TypescriptJavaScript 的超集。只要掌握了 JS,学起 TS 来并不会太难。

本文整理了 Typescript 中的数据类型,作为学习 TS 的一道入门菜。

JS 中的数据类型

最开始 JS 中只有7个数据类型,根据在内存中存储空间的不同,又分为了两大类,基本数据类型和引用数据类型,具体是:

  • 基本数据类型:NumberStringBooleanUndefinedNull
  • 引用数据类型:ObjectFunction

随着 ES6ES11 的发布,又新增了两个基本数据类型:SymbolBigInt,分别表示唯一值和大数字。

对于以上这些数据类型,相信大家都不陌生。接下来说一说 Typescript 中的数据类型。

TS 中的数据类型

Typescript 就是给 JavaScript 加上了类型系统。类型体现在哪里呢?就体现在声明变量和常量时。

在声明变量和常量时,在变量的后面使用 : 来声明该变量的类型。

基本数据类型的类型

let n: number = 10
let s: string = 'hello'
let b: boolean = true
let nl: null = null
let ud: undefined = undefined
let sb: symbol = Symbol('sb')
let bi: bigint = BigInt(100)

数组类型

TS 中的数组和 JS 中的有所不同。JS 中的数据其实是对象的变形,因为其内部元素可以是各种类型。

而 TS 中的数组,类型是固定的,或者可以使用联合类型来定义元素的类型。

// 声明一个数字类型的数组
let arr1:number[] = [1,2,3]

// 声明一个字符串类型的数组
let arr2:string[] = ['1','2','3']

// 声明一个数字或者字符串类型的数组
let arr3:(number|string)[] = [1,'2'];

元祖类型

元祖类型是一种特殊的数组类型,它的特点是限制元素长度、类型一一对应:

// 该元元祖类型的变量有两个值,且分别是数字类型和字符串类型
let tuple:[number, string] = [10, 'hello']

枚举类型

在没有枚举类型的 JS 中,我们通常会使用一个对象来模拟枚举的效果。比如一个权限系统的角色设计:

const role = {
    admin: 0,
    user: 1,
    guest: 2
}

使用 TS 中的枚举来表示就是:

enum ROLE {
    ADMIN, // 默认从0开始
    USER,
    GUEST
}

还有一种常量枚举。声明枚举时还可以手动设置值:

const enum ROLE {
    ADMIN, // 默认从0开始
    USER = 100,
    GUEST = 1000,
}

void 类型

void 类型表示空,即没有类型,只能赋值给 undefinednull 这两个好兄弟使用。

一般只用在函数返回值类型上,当函数没有返回值时,使用它:

function foo = (msg: string): void {
   console.log(msg);
}

never 类型

never代表不会出现的值,不能把其他类型赋值给 never

function error(message: string): never {
    throw new Error("err");
}

function loop(): never {
    while (true) { }
}

function fn(x:number | string){
    if(typeof x == 'number'){

    } else if(typeof x === 'string'){

    } else {
        console.log(x); // never
    }
}

any 类型

有时候大家会把 Typescript 叫作 AnyScript。

这是因为使用 TS,就是要用它的强大的类型系统。但有时候确实不知道某个值应该是什么类型的,如果不给它声明类型又不行,此时可以将其声明为 any 任意类型:

let a: any = {...随便什么东西}

使用 any 类型虽然编译器不再报错,但也就失去了类型系统的能力,不能获得类型检查和类型提示了。因此不到万不得已的时候慎用。

小结

本文简单介绍了 Typescript 中常用的数据类型和声明方式,基本上还是很好理解的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昆吾kw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值