前言🎉
- 虽然之前有学过
TypeScript
但是平时业务上面都还是用JavaScript
来开发导致逐渐对TypeScript
生疏了。 - 借此更文活动的机会再来一起学习一下
TypeScript
的知识吧。 - 在之前的文章中我们
TypeScript
的基础知识过了一遍,是不是发现其实也不会很难呢。 - 本文也是
TypeScript
进阶篇的第一篇,关于基础篇可以看我之前分享的文章喔~。
类型别名🚤
- 基本语法是 [
type
名称
=类型
] - 类型别名顾名思义就是给一个类型起了另一个名称,其他地方如果需要用到该类型的时候都可以使用它的别名来代替。
type otherType=number; let other:otherType; other=5; 复制代码
- 编译成
JavaScript
后:
var other; other = 5; 复制代码
- 值得一提的是我们给类型起了别名但并不是新建了一种类型,所以我们要遵循它的原始类型。
- 如果我们将不符合类型的值传给变量则会像上图这样报错。
- 类型定义对象的时候会和接口很像,甚至可以当成接口来使用。
type otherObj={ name:string }; interface sthObj{ name:string }; let obj1:otherObj={ name:'掘金' }; let obj2:sthObj={ name:'小卢' }; 复制代码
- 这样写是完全没有问题的,那什么时候我们改用别名什么时候接口呢?因为我们的
type
只是起了别名,所以当我们要给类型拓展的时候就要使用接口了,因为type
不可以被继承。类型别名常用于联合类型。
字符串字面量类型⛴️
- 基本语法是 [
type
名称
=字符串
] - 字符串字面量类型就是约束变量为某几个字符串其中的一个,如果出现了其他的字符串则会报错。
type sthingFruit= "apple" | "banana" | "mango"; let fruit:sthingFruit; fruit="apple"; fruit="grapes"; //报错 复制代码
- 在上面的例子中我们将
sthingFruit
约束为只能接受apple
banana
mango
的一个类型,那么其他变量在使用这个类型的时候就只能选择里面允许的值,像上面给他一个grapes
是不可取的。
元组🛳️
- 在之前基础的学习中我们知道,可以用数组来合并相同类型的数据。
let fruit:string[]=['apple','banana',"mango"]; let fruit1:string[]=['apple','banana',25]; //报错 复制代码
- 可以看到如果给定义了
string
类型的数组添加number
类型的数值,他就会报错不能将类型“number”分配给类型“string”
。 - 在
JavaScript
中的数组没有这些限制,那有没有一种情况我们TypeScript
一个数组中也可以既可以有string
类型又有number
类型呢?这时候就需要我们的元组
出场了。 - 元组(
Tuple
)合并了不同类型的对象,我们可以这样书写。
let fruit:[string,number,string]; fruit=['apple',25,'banana']; fruit=['apple',25]; //报错 复制代码
- 我们可以看到虽然元组可以接受不同类型的数值,但是赋值的时候他的格式和数量要跟
:
定义的类型格式数量一致。
网络异常,图片无法展示
|
- 在元组中我们可以跟数组一样单一的改变对应的值。
let fruit:[string,number,string]; fruit=['apple',18,'banana']; fruit[0]='watermelon'; fruit[1]=20; fruit[3]=21; //报错 类型不对 复制代码
- 我们也可以单独拿出值来做操作但是也要严格按照类型的规范。
- 虽然在赋值的时候需要严格按照格式和数量,但是如果在后续
push
的时候是可以添加约束的类型的值的。
let fruit:[string,number]; fruit=['apple',18]; fruit.push('banana'); fruit.push('grapes'); fruit.push('oranges'); 复制代码
- 值得注意的是我们后续如果给元组
push
的数值必须是之前定义的类型,相当于把类型限制于之前定义的类型的联合类型,正如上面的string
number
。
写在最后👋
- 本文也算是记录一下
TypeScript
的学习,接下来我会持续输出TypeScript
相关的知识,大家可以一起来学习。 - 如果您觉得这篇文章有帮助到您的的话不妨🍉关注+点赞+收藏+评论+转发🍉支持一下哟~~😛
往期精彩🌅
「TypeScript」入门基础(一)🎯---安装与基础数据类型
「TypeScript」入门基础(二)🎯---联合类型与接口
「TypeScript」入门基础(三)🎯---数组类型与函数类型