TypeScript 系列基础篇(三) 对象类型对象是我们组织数据的基本方式。除了常规的对象类型外,TS 还提供了只读数组、元组、属性修饰符、索引签名等知识体系。在前面的章节中,我们已经了解到了对象的基本使用。可以用字面量、interface、type alias来规定一个普通的对象类型。现在是时候了解一下常用的对象属性修饰符、类型拓展、索引签名和内置的特殊对象类型了。 还没有对象吗?那就赶紧new一个吧! 一、属性修饰符利用属性修饰符,我们可以增强对象的属性的约束。 1. ? 可选属性可选属性我们在之前就已经有所了解。定义对象类型时,在属性名后面加上英文问号 “?“ ,表示该属性可选。此后,该类型的对象里可以有这个属性,也可以没有。因此,该属性除了我们给它约束了的类型之外,还可能是undefined,从而引发某些问题。在之前的文章中提到过,这可以通过真值校验来进行类型缩减,或者给函数的形参设置默认值,从而解决。 123456789101112131415161718// 其中gender为可选属性interface Person { name: string; age: ...
Typescript 系列基础篇(二) TS 中的函数函数在我们日常代码中占有绝对重要的地位,深入了解 TS 中函数的使用对我们的学习十分有利。如果你还不了解泛型函数、函数签名、函数重载,那么阅读本文将让你对 TS 中的函数有一个更加细致的理解,必能有所收获。 一、返回值我们在声明一个函数 / 方法时,可以在括号后加上类型注释,以约束其返回值的类型,如果没有明确约束返回值的类型,则将其推论为 any 类型。除了void和any之外,其它所有的类型都应该有相应类型的返回值。 返回值如果不是约束的类型,或者约束了类型却没有return相应的类型,则会报错: 123456789101112131415161718// 声明变量时由初始值'cc'进行类型推论,得出_name为string类型let _name = "cc";// 会报错,约束了返回值的类型,却没有return相应的类型,function getName1(): string {}// 约束了返回值类型只能时stringfunction getName1(): st ...
TS 系列基础篇(一) TS 类型指南这段时间以来,TS 的发展可谓是如日中天,本想偷个懒去看看别人写的分享贴来学习,找了近十篇之后,发现要么是比较浅显,要么有些偏差,没有找到很满意的。于是决定去看官方文档。学习了一段时间后,准备写一个系列,从基础类型,对象,函数,模块等 TS 知识,到在vue、react中的应用,供有需要的同学们参考。其中,我套用了不少官方文档的示例,觉得我的学习经验不好或不正确的朋友,欢迎批评指正。 TS是JS的超集。在学 TS 之前,最好有一定的JS基础。本篇只介绍typescript的安装和各种基础类型。需要了解其它内容的同学可以看其它篇章或查阅官方文档。 [toc] (一)、安装与编译想要使用TS,得先会安装。Typescript 需要node环境,确保你已经安装了node。如果还没有安装node,可以去Node.js官网下载,傻瓜式安装。 打开项目目录进行初始化: 1npm init -y 官方推荐了npm,yarn,pnpm三种工具,任选其一即可(npm工具为node自带的包管理工具,可自由使用;yarn或pnpm工具需要提前安装)。 123456# w ...
一、Promise A+ 规范(一)相关概念 promise:一个具有then 方法的对象/函数,其行为遵循 Promise A+ 规范; thenable:具有then 方法的对象/函数; value:promise 实例的状态为兑现/成功时的值,即 resolve 的参数,可为任意类型; reason:promise 实例的状态为拒绝/失败时的值,即 reject 的值,表示拒绝/失败的原因; exception:异常值 (二)A+ 规范 states Promise 实例的状态,共有三种: pending,fulfilled,rejected。 (1) pending: 初始状态,可以改变,在 resolve / reject 执行之前都是这个状态。 在 resolve 执行后从 pending 状态改变为 fufilled; 在 reject 执行后从 pending 状态改变为 rejected; (2) fulfilled: 是一种最终状态,不可再发生改变; 当处于 pending 状态的 promise 在经过resolve之后,其状态会变为 ful ...