TypeScript泛型类型和接口

news/2024/11/30 7:53:53/
本节课我们来开始了解 TypeScript 中泛型类型的概念和接口使用。

一.泛型类型

1. 前面,我们通过泛型变量的形式来存储调用方的类型从而进行检查;
2. 而泛型也可以作为类型的方式存在,理解这一点,先了解下函数的声明方式;
// 普通函数
function info(name : string, age : number) : string {
return name + '的年龄为:' + age
}
// 匿名函数
let info = function (name : string, age : number) : string {
return name + '的年龄为:' + age
}
// 匿名函数 2
let info : (name : string, age : number) => string = function (name, age) {
return name + '的年龄为:' + age
}

PS :匿名函数 2 的声明方式中的“ => ”箭头函数,表示函数的返回类型;
3. 那么用泛型来表示上面的匿名函数,我们可以对照的样式来写;
function info<T>(msg : T) : T {
return msg
}
// 匿名函数形式的泛型类型
let myInfo : <T>(msg : T) => T = function (msg) {
return msg
}

PS :变形到这里,你会发现 : < T >( msg : T ) 这个就是类型了,即:泛型类型;

二.接口

1. 泛型不但可以作为类型来使用,还可以继续变形,用对象字面量的形式存在;
// 对象字面量形式的泛型类型
let myInfo2 : {<T>(msg : T) : T} = function (msg) {
return msg
}

PS :如果用 {} 对象字面量方式,那么 => 箭头函数就改成:冒号的对应语法即可;
2. 继续变形,泛型类型支持 {} ,那么就可以使用接口方式进行分离,有助于复用;
// 将对象字面量形式用接口形式代替
interface Iinfo {
<T>(msg : T) : T
}
let myInfo : Iinfo = function (msg) {
return msg
}
console.log(myInfo<string>('Mr.Lee'))
PS:当然,还可以变形,就是将<string>的类型参数通过 Iinfo<string>这样传递;
interface Iinfo<T> {
(msg : T) : T
}
let myInfo : Iinfo<string> = function (msg) {
return msg
}
console.log(myInfo('Mr.Lee'))


http://www.ppmy.cn/news/47567.html

相关文章

【Vue】Vue-route路由

Vue-router官网 由vue-router模块控制&#xff0c;需要额外安装依赖。参考官网 npm install vue-router --save组成 router-link&#xff1a;路由链接&#xff0c;跳转至路由视图&#xff0c;展示指定路由组件信息router-view&#xff1a;路由视图&#xff0c;展示路由组件信…

SLAM 十四讲(第一版)各章方法总结与理解

SLAM 十四讲&#xff08;第一版&#xff09;各章方法总结与理解 总结十四讲中各章各步骤提到的各种方法&#xff0c;以及具体方法在哪个 c 库中可以调用。目的在于能更直观地了解 slam 过程各步骤到底在做什么&#xff0c;以及是怎么联系在一起的。 2. 初识 SLAM SLAM&#x…

Redis---测试配置及添加slave主机

一、测试集群功能 测试高可用 1、停止 master 主机的 redis 服务 master 宕机后对应的 slave 自动被选举为 master&#xff0c;原 master 启动后&#xff0c;会自动配置为当前 master 的 slave 2、检测集群 mgm68管理主机&#xff0c;查看集群信息 主服务器地址和端口(ID值…

python笔记:datetime

处理日期和时间 1 常量 MINYEAR datetime允许的最小年份 MAXYEAR datetime允许的最大年份 2 数据类型 datetime.date带有属性year,month,daydatetime.time带有属性hour,minute,second,microsecond,tzinfodatetime.datetime带有属性year,month,day,hour,minute,second,…

22勤于思考:gRPC都有哪些优势和不足?

如果你能从专栏的开篇词开始读到这篇文章并且能够在过程中认真思考,那么我相信你目前已经能够对gRPC有了较为充分了解。在专栏的最后几节中,我们抽出一篇文章。来探讨一下gRPC有哪些优势和不足,因为只有这样我们才能取其精华,去其糟粕,学习gRPC框架设计的优点,还能反观出…

Nacos服务端健康检查-篇五

Nacos服务端健康检查-篇五 &#x1f550;Nacos 客户端服务注册源码分析-篇一 &#x1f551;Nacos 客户端服务注册源码分析-篇二 &#x1f552;Nacos 客户端服务注册源码分析-篇三 &#x1f553;Nacos 服务端服务注册源码分析-篇四 上篇分析l服务端的注册服务的整个流程&…

大四的告诫

&#x1f442; LOCK OUT - $atori Zoom/KALONO - 单曲 - 网易云音乐 &#x1f442; 喝了一口星光酒&#xff08;我只想爱爱爱爱你一万年&#xff09; - 木小雅 - 单曲 - 网易云音乐 其实不是很希望这篇文章火&#xff0c;不然就更卷了。。 从大一开始&#xff0c;每天10小时…

mysql 事务的 ACID 特征与使用

事务的四大特征&#xff1a; A 原子性&#xff1a;事务是最小的单位&#xff0c;不可以再分割&#xff1b;C 一致性&#xff1a;要求同一事务中的 SQL 语句&#xff0c;必须保证同时成功或者失败&#xff1b;I 隔离性&#xff1a;事务1 和 事务2 之间是具有隔离性的&#xff1…