操作符extends的作用是什么

简介: 操作符extends的作用是什么

在 TypeScript 中,extends 是一个关键字,用于表示类型的继承或约束关系。它主要用于以下两个方面:

  1. 类型继承:extends 关键字可以用于类、接口和类型别名的定义,表示一个类型继承自另一个类型。通过继承,子类型可以获得父类型的属性和方法,并且可以进行覆写或扩展。
class Animal {
    name: string;
    constructor(name: string) {
        this.name = name;
    }
    eat() {
        console.log(`${this.name} is eating.`);
    }
}
class Dog extends Animal {
    bark() {
        console.log(`${this.name} is barking.`);
    }
}
const dog = new Dog("Bobby");
dog.eat(); // 继承自父类 Animal 的方法
dog.bark(); // 子类独有的方法
  • 在上述示例中,Dog 类继承自 Animal 类,通过 extends 关键字建立了类之间的继承关系,使得 Dog 类拥有 Animal 类的属性和方法。
  • 泛型约束:extends 关键字也可以用于泛型参数的约束,限制泛型类型必须满足指定的条件。通过使用 extends 关键字进行泛型约束,可以确保传入的类型满足特定要求,以便进行进一步的操作。
interface Lengthwise {
    length: number;
}
function loggingIdentity<T extends Lengthwise>(arg: T): T {
    console.log(`Length of ${arg}: ${arg.length}`);
    return arg;
}
loggingIdentity([1, 2, 3]); // 数组长度满足泛型约束
loggingIdentity("Hello"); // 字符串的 length 属性满足泛型约束
loggingIdentity(123); // 错误,数字类型没有 length 属性
  1. 在上述示例中,T extends Lengthwise 表示泛型参数 T 必须是满足 Lengthwise 接口的类型,即具有名为 length 的数值属性。通过使用 extends 关键字进行泛型约束,我们可以确保传入的类型满足特定的条件,从而在函数内部进行相应的操作。

总结起来,extends 关键字在 TypeScript 中用于表示类型的继承关系和约束关系,它允许子类型继承父类型的特性,并对泛型类型进行约束限制。

相关文章
|
6月前
|
存储 API 内存技术
GD32通过SPI和QSPI模式读取GD的NOR Flash
GD32通过SPI和QSPI模式读取GD的NOR Flash
899 2
Next.js 实战 (三):优雅的实现暗黑主题模式
这篇文章介绍了在Next.js中实现暗黑模式的具体步骤。首先,需要安装next-themes库。然后,在/components/ThemeProvider/index.tsx文件中新增ThemeProvider组件,并在/app/layout.tsx文件中注入该组件。如果想要加入过渡动画,可以修改代码实现主题切换时的动画效果。最后,需要在需要的位置引入ThemeModeButton组件,实现暗黑模式的切换。
414 0
Next.js 实战 (三):优雅的实现暗黑主题模式
|
弹性计算 安全 Cloud Native
Alibaba Cloud Linux镜像系统超好用!兼容CentOS生态,性能稳定性绝对可以!
Alibaba Cloud Linux是阿里云的自研Linux发行版,兼容CentOS/RHEL,提供长期免费支持。它针对云服务器ECS优化,适用于多种场景,如Web服务、云原生应用等。Alibaba Cloud Linux 3基于Anolis OS 8,提供安全、高性能、十年维护及丰富的开源生态。用户可在ECS购买时选择镜像安装,支持多架构并提供热补丁、解决方案和快速启动版。更换ECS操作系统是免费的。
2360 5
|
芯片 C++
【MDK(keil)编译错误】找不到main.o及解决方法、多处报错“未定义”
【MDK(keil)编译错误】找不到main.o及解决方法、多处报错“未定义”
2001 0
【MDK(keil)编译错误】找不到main.o及解决方法、多处报错“未定义”
|
Ubuntu Linux Shell
Docker CE 镜像源站
Docker CE 镜像源站
235419 117
|
开发工具 git
git submodule update --init --recursive失败的处理办法
git submodule update --init --recursive失败的处理办法
3980 0
|
数据可视化 编译器 Windows
CMake“cmake is not able to compile a simple test program”错误 的解决方法
CMake“cmake is not able to compile a simple test program”错误 的解决方法
1942 0
|
7天前
|
云安全 人工智能 自然语言处理
|
11天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
973 35