「TypeScript」入门进阶(一)✈️---类型别名、字符串字面量与元组

简介: 「TypeScript」入门进阶(一)✈️---类型别名、字符串字面量与元组

前言🎉


  • 虽然之前有学过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」入门基础(二)🎯---联合类型与接口

「TypeScript」入门基础(三)🎯---数组类型与函数类型

「TypeScript」入门基础(四)🎯---类型断言


相关文章
|
1月前
|
JavaScript 前端开发 安全
深入理解TypeScript:增强JavaScript的类型安全性
【10月更文挑战第8天】深入理解TypeScript:增强JavaScript的类型安全性
45 0
|
1月前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与实用技巧
【10月更文挑战第8天】深入理解TypeScript:类型系统与实用技巧
|
4天前
|
JavaScript 安全 前端开发
TypeScript类型声明:基础与进阶
通过本文的介绍,我们详细探讨了TypeScript的基础与进阶类型声明。从基本数据类型到复杂的泛型和高级类型,TypeScript提供了丰富的工具来确保代码的类型安全和可维护性。掌握这些类型声明能够帮助开发者编写更加健壮和高效的代码,提高开发效率和代码质量。希望本文能为您在使用TypeScript时提供实用的参考和指导。
12 2
|
18天前
|
JavaScript 开发者
在 Babel 插件中使用 TypeScript 类型
【10月更文挑战第23天】可以在 Babel 插件中更有效地使用 TypeScript 类型,提高插件的开发效率和质量,减少潜在的类型错误。同时,也有助于提升代码的可理解性和可维护性,使插件的功能更易于扩展和升级。
|
29天前
|
JavaScript 前端开发
TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第11天】TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!
|
1月前
|
JavaScript 前端开发 安全
TypeScript【基础类型】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第9天】TypeScript【基础类型】超简洁教程!再也不用看臭又长的TypeScript文档了!
|
1月前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与最佳实践
【10月更文挑战第8天】深入理解TypeScript:类型系统与最佳实践
|
1月前
|
移动开发 JavaScript 前端开发
TypeScript:数组类型&函数使用&内置对象
本文介绍了 TypeScript 中的数组类型、对象数组、二维数组、函数、函数重载、内置对象等概念,并通过代码示例详细展示了它们的使用方法。还提供了一个使用 HTML5 Canvas 实现的下雨效果的小案例。
|
17天前
|
JavaScript 前端开发 安全
TypeScript进阶:类型系统与高级类型的应用
【10月更文挑战第25天】TypeScript作为JavaScript的超集,其类型系统是其核心特性之一。本文通过代码示例介绍了TypeScript的基本数据类型、联合类型、交叉类型、泛型和条件类型等高级类型的应用。这些特性不仅提高了代码的可读性和可维护性,还帮助开发者构建更健壮的应用程序。
22 0
|
1月前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与实用技巧
【10月更文挑战第8天】深入理解TypeScript:类型系统与实用技巧