当前位置: 首页 > news >正文

TypeScript泛型类型和接口

本节课我们来开始了解 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.lryc.cn/news/60638.html

相关文章:

  • docker命令
  • 2023 年 3 月 NFT 月度报告
  • 【http】 get方法和Post方法区别;http和https
  • 第三章 法的渊源与法的分类
  • 在Ubuntu18.04或者20.04下搭建edk2运行环境
  • 多线程编程常用函数用法
  • C++ 标准模板库(Standard Template Library,STL)
  • 一个寄存器的bit2 bit3位由10修改成11,C示例
  • 【洛谷】P1631 序列合并
  • 2023年七大最佳勒索软件解密工具
  • prettier 命令行工具来格式化多个文件
  • 我发现了PMP通关密码!这14页纸直接背!
  • Medical X-rays Dataset汇总(长期更新)
  • 一文告诉你如何做好一份亚马逊商业计划书的框架
  • 原来ChatGPT可以充当这么多角色
  • 数据结构_第十三关(3):归并排序、计数排序
  • “成功学大师”杨涛鸣被抓
  • 【hello C++】内存管理
  • AppArmor零知识学习十二、源码构建(9)
  • Unity - 带耗时 begin ... end 的耗时统计的Log - TSLog
  • Python 智能项目:1~5
  • C++设计模式:面试题精选集
  • 蓝桥 卷“兔”来袭编程竞赛专场-10仿射加密 题解
  • android so库导致的闪退及tombstone分析
  • 图结构基本知识
  • Hibernate 的多种查询方式
  • FreeRTOS 任务调度及相关函数详解(一)
  • 飞桨paddlespeech语音唤醒推理C实现
  • 04-Mysql常用操作
  • TensorFlow 2 和 Keras 高级深度学习:1~5