01. TypeScript 的类型

1. 引言

由于之前学习 TypeScript 都是断断续续的,当然也完成了一些项目,但是都是很简单的定义类型,然后写代码,并没有深入的理解学习和使用,最近有时间,而且现在大多数框架基本都是使用 TypeScript 开发的,因此决定系统的重新在学习一遍,将细节的东西研究一下,然后输出成文章,这样有助于我的理解。

2. 基础类型

基础类型:string、number、boolean、null、undefined、symbol、bigint!!!

3. 字符串

// 字符串
let name1: string = "Taro";
console.log(name1);

字符串类型没有什么特殊的,基本都知道。

4. 数字

// 数字
let age2: number = 0xf00d; // 十六进制
let age1: number = 25;// 十进制
let age3: number = 0o777; // 八进制
let age4: number = 0b1010; // 二进制
let age5: number = 1e3; // 科学计数法
let age6: number = NaN; // NaN
let age7: number = Infinity; // Infinity
console.log(age1, age2, age3, age4, age5);
console.log(age6, age7);

注意:不管是二进制、八进制、十六进制、科学计数法、NaN 还是 Infinity 都属于数字类型!!!

5. 布尔值

5.1 常见布尔值申明
let isMarried1: boolean = true;
console.log(isMarried1);
5.2 构造函数申明
let isMarried2: Boolean = new Boolean(true);
console.log(isMarried2);

注意,使用构造函数 Boolean 创造的对象不是布尔值!!!

5.3 布尔值申明

可以直接声明,或者使用字面量语法!!!

let isMarried3: boolean = false;
let isMarried4: boolean = Boolean(false);
console.log(isMarried3);
console.log(isMarried4);

6. null

let nullValue1: null = null;
console.log(nullValue1);

7. undefined

let undefinedValue1: undefined = undefined;
console.log(undefinedValue1);

8. void

在 TypeScript 中,可以用 void 表示没有任何返回值的函数。

function sayHello(): void {
  console.log("Hello, world!");
}

9. void 和 null 、undefined 的区别

  1. void 表示没有任何返回值的函数,null、undefined 表示空值。
  2. 在 TypeScript 中,null 和 undefined 不能赋值给其他类型,只能赋值给 void 和它们自己。
  3. null 和 undefined 赋值给它们自己。
  4. 在严格模式下,null 不能 赋予 void 类型。
9.1 将 null 和 undefined 赋值给其他类型

输入图片说明

9.2 严格模式下,null 不能 赋予 void 类型

输入图片说明

10. Symbol (ES6 新增)

let sym1: symbol = Symbol("key");
console.log(sym1);

11. BigInt (ES2020 新增)

let bigIntValue1: bigint = 12345678901234567890n;
console.log(bigIntValue1);

12. any 类型

  1. 没有强制限定哪种类型,随时切换类型都可以 我们可以对 any 进行任何操作,不需要检查类型。
  2. 声明变量的时候没有指定任意类型默认为any。
  3. 弊端如果使用any 就失去了TS类型检测的作用。
let anyValue1: any = "hello";
anyValue1 = 123;
anyValue1 = true;
console.log(anyValue1);

let anyValue2;
anyValue2 = "hello";
anyValue2 = 123;
anyValue2 = true;
console.log(anyValue2);

13. unknown 类型

  1. unknown 类型比 any 更加严格当你要使用 any 的时候可以尝试使用 unknown 。
  2. unknown 类型也被认为是 top type ,但它更安全。与 any 一样,所有类型都可以分配给 unknown。
  3. unknown 类型不能作为子类型只能作为父类型; any 可以作为父类型和子类型【unknown 类型不能赋值给其他类型】。
  4. 如果是 any 类型在对象没有这个属性的时候还在获取是不会报错的;如果是 unknown 是不能调用属性和方法。
13.1 unknown 不能赋值给其他子类型

输入图片说明

13.2 unknown 可以赋值给 any

输入图片说明

13.3 any 类型的对象和 unknown 类型的对象

输入图片说明

14. Object

Object 是所有类的基类,所有类的实例都继承自 Object 类!

let obj3: Object = { name: "Taro" };
console.log(obj3);
let obj4: Object = 123;
console.log(obj4);

15. object

object 代表所有非值类型的类型,例如 数组 对象 函数等,常用于泛型约束!

输入图片说明

16. {}

{} 和 Object 一样,包含所有类型!

输入图片说明

字面量模式是不能修改值的!!!

17. 类型的层级关系

  1. any unknown
  2. Object
  3. Number String Boolean
  4. number string boolean
  5. 1 “123” true
  6. never
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Rattenking

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

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

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

打赏作者

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

抵扣说明:

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

余额充值