![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
TypeScript
文章平均质量分 58
一小池勺
人生路漫漫,浅浅地笑,轻轻地爱,稳稳地走。
展开
-
TypeScript 的数组类型
JavaScript 数组在 TypeScript 里面分成两种类型,分别是:数组(array)元组(tuple)TypeScript 数组有一个根本特征:所有成员的类型必须相同,但是成员数量是不确定的,可以是无限数量的成员,也可以是零成员。数组的类型有两种写法。第一种写法是在数组成员的类型后面,加上一对方括号。上面示例中,数组arr的类型是number[],其中number表示数组成员类型是number。如果数组成员的类型比较复杂,可以写在圆括号里面。原创 2024-05-28 14:36:47 · 294 阅读 · 0 评论 -
什么是类型兼容?
如果类型A的值可以赋值给类型B,那么类型A就称为类型B的子类型(subtype)。之所以有这样的规则,是因为子类型继承了父类型的所有特征,所以可以用在父类型的场合。但是,子类型还可能有一些父类型没有的特征,所以父类型不能用在子类型的场合。上面示例中,hi是string的子类型,string是hi的父类型。上面示例中,变量a和b的类型是不一样的,但是变量a赋值给变量b并不会报错。TypeScript 的一个规则是,凡是可以使用父类型的地方,都可以使用子类型,但是反过来不行。原创 2024-05-28 09:40:25 · 211 阅读 · 0 评论 -
不要混淆 typeof 的值运算和类型运算
TypeScript 将typeof运算符移植到了类型运算,它的操作数依然是一个值,但是返回的不是字符串,而是该值的 TypeScript 类型。由于编译时不会进行 JavaScript 的值运算,所以 TypeScript 规定,typeof 的参数只能是标识符,不能是需要运算的表达式。typeof 是一个很重要的 TypeScript 运算符,有些场合不知道某个变量foo的类型,这时使用typeof foo就可以获得它的类型。上面示例中,用到了两个typeof,第一个是类型运算,第二个是值运算。原创 2024-05-28 09:35:35 · 413 阅读 · 0 评论 -
type 命令
别名可以让类型的名字变得更有意义,也能增加代码的可读性,还可以使复杂类型用起来更方便,便于以后修改变量的类型。type命令属于类型相关的代码,编译成 JavaScript 的时候,会被全部删除。上面示例中,if代码块内部的类型别名Color,跟外部的Color是不一样的。别名支持使用表达式,也可以在定义一个别名时,使用另一个别名,即别名允许嵌套。上面示例中,别名Greeting使用了模板字符串,读取另一个别名World。这意味着,代码块内部定义的别名,影响不到外部。type命令用来定义一个类型的别名。原创 2024-05-28 09:21:22 · 178 阅读 · 0 评论 -
交叉类型的主要用途是表示对象的合成
上面示例中,变量x同时是数值和字符串,这当然是不可能的,所以 TypeScript 会认为x的类型实际是never。交叉类型A&B表示,任何一个类型必须同时属于A和B,才属于交叉类型A&B,即交叉类型同时满足A和B的特征。交叉类型(intersection types)指的多个类型组成的一个新类型,使用符号&表示。上面示例中,类型B是一个交叉类型,用来在A的基础上增加了属性bar。交叉类型常常用来为对象类型添加新属性。交叉类型的主要用途是表示对象的合成。原创 2024-05-28 09:14:04 · 120 阅读 · 0 评论 -
通过类型缩小来处理联合类型值
类型缩小”是 TypeScript 处理联合类型的标准方法,凡是遇到可能为多种类型的场合,都需要先缩小类型,再进行处理。上面示例中,参数变量id可能是数值,也可能是字符串,这时直接对这个变量调用toUpperCase()方法会报错,因为这个方法只存在于字符串,不存在于数值。如果一个变量有多种类型,读取该变量时,往往需要进行“类型缩小”(type narrowing),区分该值到底属于哪一种类型,然后再进一步处理。上面示例中,函数体内部对参数变量scheme进行类型缩小,根据不同的值类型,返回不同的结果。原创 2024-05-28 08:31:22 · 217 阅读 · 0 评论 -
理解包装对象类型
上一小节说过,Symbol()和BigInt()这两个函数不能当作构造函数使用,所以没有办法直接获得 symbol 类型和 bigint 类型的包装对象,因此Symbol和BigInt这两个类型虽然存在,但是完全没有使用的理由。JavaScript 的 8 种类型之中,undefined和null其实是两个特殊值,object属于复合类型,剩下的五种属于原始类型(primitive value),代表最基本的、不可再分的值。因为绝大部分使用原始类型的场合,都是使用字面量,不使用包装对象。原创 2024-05-28 08:04:32 · 600 阅读 · 0 评论