首页 > 其他分享 >ts---泛型

ts---泛型

时间:2024-08-31 17:37:24浏览次数:12  
标签:42 ts value --- 类型 let arg 泛型

泛型:是一种编程语言特性,允许在定义函数、类、接口等时使用占位符来表示类型,而不是具体的类型。

我的理解:泛型就是广泛的类型,既然是广泛的类型,就是应用范围很广,可适用于多种形式,目的是为了提高代码的复用性。

优势:

代码重用: 可以编写与特定类型无关的通用代码,提高代码的复用性。
类型安全: 在编译时进行类型检查,避免在运行时出现类型错误。
抽象性: 允许编写更抽象和通用的代码,适应不同的数据类型和数据结构。

1、泛型的标识符:可使用任意标识符

在泛型中,通常使用一些约定俗成的标识符,比如常见的 T(表示 Type)、UV 等,但实际上你可以使用任何标识符。

function identity<T>(arg: T): T {
    return arg;
}

2、泛型函数

function identity<T>(arg: T): T {
    return arg;
}
// 使用泛型函数
let result = identity<string>("Hello");
console.log(result); // 输出: Hello
let numberResult = identity<number>(42);
console.log(numberResult); // 输出: 42

4、泛型接口

// 基本语法
interface Pair<T, U> {
    first: T;
    second: U;
}

// 使用泛型接口
let pair: Pair<string, number> = { first: "hello", second: 42 };
console.log(pair); // 输出: { first: 'hello', second: 42 }

5、泛型类

// 基本语法
class Box<T> {
    private value: T;

    constructor(value: T) {
        this.value = value;
    }

    getValue(): T {
        return this.value;
    }
}

// 使用泛型类
let stringBox = new Box<string>("TypeScript");
console.log(stringBox.getValue()); // 输出: TypeScript

6、泛型与默认值

// 基本语法
function defaultValue<T = string>(arg: T): T {
    return arg;
}

// 使用带默认值的泛型函数
let result1 = defaultValue("hello"); // 推断为 string 类型
let result2 = defaultValue(42);      // 推断为 number 类型

打完收工!

标签:42,ts,value,---,类型,let,arg,泛型
From: https://www.cnblogs.com/e0yu/p/18390518

相关文章

  • docker搭建nats集群
    SupportDocker-ComposeDeploynats+nats-streaming集群方案1通过nats+nats-streaming搭建3节点nats集群,nats提供服务;2支持认证;3nats-streaming提供节点和消息持久化;启动gitclonehttps://github.com/xiliangMa/nats-cluster.gitcddocker-composedock......
  • AI跟踪报道第54期-新加坡内哥谈技术-本周AI新闻: OpenAI最新模型揭晓和全AI生成的游戏
      每周跟踪AI热点新闻动向和震撼发展想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行!订阅:https://......
  • RSIC-V常用汇编语言及常用数据结构-栈
    这是我在上完浙大刘鹏老师的视频课后做的笔记。我觉得在学完后,自己写出来会记忆会更深刻,因为要重新梳理一遍。同时遇到不会的还可以重新复习以前的知识。程序执行流程:高级语言->汇编语言->逻辑块->数字电路常用汇编语言:1.算数指令和访存指令在汇编语言里面,操作对象是寄存......
  • HPC应用&生命科学领域软件AutoDock-GPU详细安装使用教程
    目录应用简介编译安装测试算例及提交脚本应用简介AutoDock-GPU是基于OpenCL的GPU加速版本分子对接软件autodock-4.2.6。可以支持DCU已经其他支持OpenCL的设备,如CPU和NvidiaGPU等。github源码: https://github.com/ccsb-scripps/AutoDock-GPU编译安装AutoDock-GPU......
  • 【c++实用】CMakeLists 基本用法(一)
    指令解释cmake_minimum_required(VERSION3.24):指令指定了所需的最低CMake版本a.作用:确保在执行CMake配置时,使用的CMake版本不低于3.24。如果安装的CMake版本低于指定的版本,CMake将会输出错误信息,并拒绝继续执行后续命令b.兼容性:有助于确保项目构建脚......
  • 渗透测试基础-反射型XSS原理及实操
    只为对所学知识做一个简单的梳理,如果有表达存在问题的地方,麻烦帮忙指认出来。我们一起为了遇见更好的自己而努力......
  • 信安专业学生-必考认证证书
    市面上大部分国家认可的证书对工作年限都有要求唯一例外的是今天的主角-NISPNISP证书是什么?**国家信息安全水平考试(NISP)**,是由**中国信息安全测评中心**实施培养国家网络空间安全人才的项目。该项目主要面向**在校学生**,可与CISP无缝对接,填补了在校学生无法考取CI......
  • YOLOv5改进 | NMS | 将NMS修改为soft-NMS【完整代码】
    秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转......
  • 元气日语 Genki-1 第 8 课 烧烤
    バーベキュー课文Iゆい:たけしさん、あしたみんなでバーベキューをしませんか。たけし:いいですね。だれがきますか。ゆい:ソラさんとロバートさんがきます。メアリーさんもくると思います。たけし:けんさんは?ゆい:けんさんはアルバイトがあると言っていました。たけ......
  • 信息学奥赛初赛天天练-80-NOIP2015普及组-基础题5-错位排列、二叉树、完全二叉树、叶
    NOIP2015普及组基础题521重新排列1234使得每一个数字都不在原来的位置上,一共有()种排法22一棵结点数为2015的二叉树最多有()个叶子结点2相关知识点1)错位排列考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就......