这是我参与8月更文挑战的第11天,活动详情查看:8月更文挑战
前言🎉
- 虽然之前有学过
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约束为只能接受applebananamango的一个类型,那么其他变量在使用这个类型的时候就只能选择里面允许的值,像上面给他一个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的数值必须是之前定义的类型,相当于把类型限制于之前定义的类型的联合类型,正如上面的stringnumber。
写在最后👋
- 本文也算是记录一下
TypeScript的学习,接下来我会持续输出TypeScript相关的知识,大家可以一起来学习。 - 如果您觉得这篇文章有帮助到您的的话不妨🍉关注+点赞+收藏+评论+转发🍉支持一下哟~~😛
往期精彩🌅
「TypeScript」入门基础(一)🎯---安装与基础数据类型
「TypeScript」入门基础(二)🎯---联合类型与接口