「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」入门基础(四)🎯---类型断言


相关文章
|
26天前
|
JavaScript 前端开发
【TypeScript入门】TypeScript入门篇——数据类型
我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不清1和‘汉’的区别的,因此,在每个编程语言里都会有一个叫数据类型的东东,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给他。
17 3
|
2月前
|
编解码 JavaScript 前端开发
TypeScript【第三方声明文件、自定义声明文件、tsconfig.json文件简介、tsconfig.json 文件结构与配置】(六)-全面详解(学习总结---从入门到深化)
TypeScript【第三方声明文件、自定义声明文件、tsconfig.json文件简介、tsconfig.json 文件结构与配置】(六)-全面详解(学习总结---从入门到深化)
62 0
|
6天前
|
JavaScript
vite+typescript从入门到实战(二)
vite+typescript从入门到实战
31 0
|
13天前
|
JavaScript 前端开发
TypeScript极速入门笔记1
TypeScript极速入门笔记1
26 4
|
1月前
|
JavaScript 安全
TypeScript 中的高级类型转换技术:映射类型、条件类型和类型推断
TypeScript 中的高级类型转换技术:映射类型、条件类型和类型推断
|
1月前
react+typescript给state和props定义指定类型
react+typescript给state和props定义指定类型
16 1
|
2月前
|
存储 JavaScript 前端开发
【HarmonyOS 4.0 应用开发实战】TypeScript入门之元组详讲
【HarmonyOS 4.0 应用开发实战】TypeScript入门之元组详讲
39 0
|
2月前
|
JavaScript 前端开发
【HarmonyOS 4.0 应用开发实战】TypeScript入门之模块化详讲
【HarmonyOS 4.0 应用开发实战】TypeScript入门之模块化详讲
29 0
|
2月前
|
JavaScript 前端开发 索引
【HarmonyOS 4.0 应用开发实战】TypeScript入门之接口详讲
【HarmonyOS 4.0 应用开发实战】TypeScript入门之接口详讲
37 0
|
2月前
|
JavaScript
【HarmonyOS 4.0 应用开发实战】TypeScript入门之声明、数据类型、函数、类的详讲
【HarmonyOS 4.0 应用开发实战】TypeScript入门之声明、数据类型、函数、类的详讲
43 0