TypeScript中的重要概念有哪些
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍了TypeScript中的重要概念有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇TypeScript中的重要概念有哪些文章都会有所收获,下面我们一起
千家信息网最后更新 2025年01月19日TypeScript中的重要概念有哪些
这篇文章主要介绍了TypeScript中的重要概念有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇TypeScript中的重要概念有哪些文章都会有所收获,下面我们一起来看看吧。
Typescript中的几个重要概念
1.any 和 T(泛型)的区别
/**any 和 T ,一个是任意类型,一个是泛类型卧槽,这也太难让人理解他的区别了吧,字面意思几乎一样,但是我连续读了:泛..泛.泛 任意..任意类型,读了十遍,还是感受到了差异*/any:任意类型,代表的是所有类型泛型:泛型他就是所有类型中的一种类型,并不是完全的所有类型,所以在函数中返回的类型要和定义的类型一摸一摸,不能修改他原有的类型// 在这种场景下,有区别体现//正确function getInfo(age: any): any { return "鬼哥今年:"+age}getInfo("18岁")//错误function getInfo(age: T): T { return "鬼哥今年:"+age}getInfo("18岁")//这里直接报错
2.type interface enum
type
:用来约束数据类型(数据结构,数据属性且可以是联合类型,元组类型)
interface
:用来约束数据类型(数据结构,数据属性且不可以是联合类型,元组类型)
enum
:用来约束数据类型的值,而并非数据类型
使用场景如:
//人interface People {}//动物interface Animal {}// type和interface区别1// 正确(人既可以是动物,也可以是人)type User=People | Animal;// 错误(人既可以是动物,也可以是人),使用interface定义却是不可以的interface User { People | Animal };其实从语法上可以看出他们两的区别,`type` 是用`=`符号,既然是等于,那肯定就存在多种情况的,`interface`使用的是`{}`符号,是一种`定义`的形式,既然是`定义`,那肯定就是觉得性质的,只会有一种可能/**************************************/// type和interface区别2既然`interface`是一种数据结构,那肯定是可以实现这种数据结构的,所以`interface`可以实现的功能// 比如运用interface用来定义接口,然后实现接口的功能:interface UserModelApi { getUserList:()=>Promise, getOrderList:()=>Promise,}class HtppApi implements UserModelApi{ getUserList(){ return new Promise((resolve)=>{ }); } getOrderList(){ return new Promise(()=>{ }); }}// enum和const的区别/**他们两者的相同点,都是定义数据,且定义的数据不可更改.不同点在于1)其实和上面描述`type`与`interface`一样,他们都是一个是定义,一个是赋值2)下面的代码是不是从感觉使用枚举看上去语法的阅读性更强3)`enum`枚举可以用来定义类型*/// 正确(语法理解上一看就知道,是这个对象有哪种情况)enum Sex { M = "男", F = "女" }// `enum` Sex枚举可以用来定义类型const getInfo=function(sex:Sex){ return `我的性别为:${sex}`;}/**************************************/// 错误(而这种语法看上去就是,这个对象有哪些值)const Sex ={ M:"男", F:"女"}// `const` Sex 不可以用来定义类型const getInfo=function(sex:Sex){ return `我的性别为:${sex}`;}
3.映射类型
将对象或数组中类型转换为另一个类型
// 假设一个系统账号登录的场景://定义一个用户信息的接口类型interface User { age: number name: string password:string}//登录成功设置用户数据const UserInfo:User={ age:1, name: "鬼哥", password:"123456"}//输出密码为:123456console.log(UserInfo.password)//此时当设置用户数据成功后,User接口定义就不能再修改了,那我们就可以使用`映射类型`//设置所有属性为只读* keyof:获取当前对象所有属性{"age" | "name" | "password"}* T:泛型* P: 当前属性type SetReadonly ={ readonly [P in keyof T]:T[P];}//新建只读用户数据对象type ReadonlyUser = SetReadonly;const UserInfo:ReadonlyUser={ age:1, name: "鬼哥", password:"123456"}//直接报错,因为UserInfo实力中的每个属性都不可以修改console.log(UserInfo.password)//当然这样的举例说服我们去使用确实还缺少一些说服力,但是他的场景就是:在定义类型之后,可以重新设置定义类型的属性值
4.交叉类型
/**意思其实就是,共同的意思(数学中的并集的概念)这个和extends功能上相差不大,但是extends如果是类的话需要调用父函数构造函数大致使用如下:*/interface UserApi { getOrderList():void}// extends方式interface AppApi extends UserApi { getUserList():void}const appApi:AppApi={ getOrderList(){ }, getUserList(){ }}//交叉类型方式const appApi:AppApi&UserApi={ getOrderList(){ }, getUserList(){ }}
5.联合类型
/**意思其实就是,相同部分的意思(数学中的交集的概念)*/interface UserApi { getUserList():void}interface AppApi{ getUserList():void}//联合类型方式const appApi:AppApi|AppApi={ getUserList(){ }}
6.元组
/**这个从字面上就很好理解元:元素(代码里就是对象的意思)组:数组所以意思就是:一个包含多个类型对象的数组集合,这个不要想太多就是这么个东西*/type regionType={ province:string, city:string}const region:regionType={ province:"上海省", city:"上海市"}const tableList = ["鬼哥",15,region];
关于"TypeScript中的重要概念有哪些"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"TypeScript中的重要概念有哪些"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
类型
数据
就是
概念
对象
属性
意思
重要
场景
接口
数据结构
用户
结构
语法
联合
函数
功能
动物
数组
方式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全解析http
产品数据库意义是什么
国家网络安全的领导者
腾讯网络技术岗好吗
中国数据库等值连接
护苗网络安全课第三课
想要学习网络技术去哪里
数据库的压力测试
台式无线网卡管理服务器
一键修改数据库密码
工业软件开发正规平台
线上数据库应用定点机构
网络安全法错误的
网络安全实施项目合同
梅州软件开发原理
退休人员移交信息数据库管理制度
软件开发怎么设置试用期
拉手网络技术有限公司招聘
企业网络安全趋势
搞软件开发工作心得简短一句话
小程序前端用什么软件开发
南京构建智慧消防软件开发
服务器机柜 深度
默纳克服务器显示id错误
删除数据库中包含某个中文的数据
上海上门软件开发定制价钱
wind数据库 免费版
高德导航车机版地图数据库
西安网络安全周主题
沈阳软件开发公司信息