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

TypeScript学习记录

函数签名

函数签名指的是函数的声明或者定义中包含的信息,主要包括函数的参数类型、参数个数、返回类型等。函数签名定义了函数的形状,是函数类型的一部分。

在 TypeScript 或者 JavaScript 中,函数签名包括以下几个要素:

  1. 参数列表: 指定了函数接受的参数的数量和类型。

  2. 返回类型: 指定了函数调用后返回的值的类型。

  3. 函数名: 表示函数的名称。

下面是一个简单的 TypeScript 函数签名的例子:

// 函数签名
type AddFunction = (a: number, b: number) => number;

// 使用函数签名定义具体的函数
const add: AddFunction = (x, y) => x + y;

// 调用具体的函数
const result = add(3, 5);
console.log(result); // 输出: 8

在这个例子中:

  • AddFunction 是一个函数类型,它的函数签名表示这个函数接受两个参数,都是 number 类型,返回值是一个 number 类型。

  • add 是一个使用了 AddFunction 类型的具体函数,它接受两个参数并返回它们的和。

函数签名有助于提供类型安全性,因为 TypeScript 可以在编译时检查函数的使用是否符合其定义。这也是 TypeScript 中强大的类型系统的一部分。

泛型类型

泛型类型是一种在编程中使用的抽象类型,它允许你定义一个类型占位符,在实际使用时再指定具体的类型。在 TypeScript 中,泛型类型可以应用于函数、类、接口等,提供更灵活和可重用的代码结构。

泛型类型使用尖括号 <T> 来表示,其中 T 是一个占位符,代表类型参数。你可以在定义泛型类型时使用 T 或其他合适的字母或单词。以下是一些示例:

①泛型函数类型

type IdentityFunction<T> = (arg: T) => T;

// 使用泛型类型
const echo: IdentityFunction<string> = (arg) => arg;
const duplicate: IdentityFunction<number> = (arg) => arg * 2;

②泛型类类型:

class Box<T> {
    private value: T;

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

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

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

const numberBox = new Box<number>(42);
console.log(numberBox.getValue()); // 输出: 42

③泛型接口类型:

interface Pair<T, U> {
    first: T;
    second: U;
}

// 使用泛型接口
const pair1: Pair<number, string> = { first: 1, second: "two" };
const pair2: Pair<string, boolean> = { first: "hello", second: true };

这些例子中的 T 是泛型类型参数,它表示一个占位符,具体的类型将在使用时提供。泛型类型提供了一种更通用、可重用的方式来定义函数、类、接口等,使得代码更灵活,能够适应不同的数据类型。


http://www.kler.cn/news/148378.html

相关文章:

  • LeetCode51. N-Queens
  • java后端实现登录退出功能,并用过滤器验证
  • android trace文件的抓取与查看方法
  • 【Lidar】基于Python的点云数据下采样+体素显示
  • tauri中使用rust调用动态链接库例子(使用libloading库和libc库)
  • ubuntu22.04 arrch64版在线安装java环境
  • C语言-指针讲解(3)
  • 用通俗的方式讲解Transformer:从Word2Vec、Seq2Seq逐步理解到GPT、BERT
  • 人机交互3——多主题多轮对话
  • TOD和PPS精确时间同步技术
  • C#面向对象
  • 2023网络安全产业图谱
  • 02-Java集合之双列集合,如HashMap,Hashtable,Properties,TreeMap的底层结构
  • 人工智能技术发展漫谈
  • 【Linux】信号
  • 《2023全球隐私计算报告》正式发布!
  • C语言错误处理之“非局部跳转<setjmp.h>头文件”
  • python 爬虫之 爬取网站信息并保存到文件
  • C++初阶--String类的使用
  • TCP 传输可靠性问题
  • DMX512协议及对接口电路的分析
  • openssl版本号解析
  • HTML新手入门笔记整理:HTML基本标签
  • 【DevOps】SonarQube 指标解读
  • Vue3 实现elementPlus的table列宽调整和拖拽
  • 最新版灵沐V3.3微信资源类小程序源码支持流量主
  • C语言面试之旅:掌握基础,探索深度(面试实战之c语言关键词中篇)
  • 在Spring Boot中使用ECharts绘制数据图表
  • 智慧化工~工厂设备检修和保全信息化智能化机制流程
  • 火狐挂代理访问问题Software is preventing Firefox from safely connecting to this site