首页 > 其他分享 >在 TypeScript 中,extends

在 TypeScript 中,extends

时间:2023-11-14 11:23:40浏览次数:30  
标签:TypeScript const number value MyType extends 类型

extends 是一个关键字,用于指定类型参数的约束。它在类型参数的声明中使用,以确保类型参数满足特定的条件。

具体来说,extends 后面可以跟随一个类型,表示类型参数必须是该类型的子类型。在泛型类型或泛型函数中,这样的约束可以提供更强的类型安全性,使得类型参数符合特定的要求。

以下是一些示例说明 extends 的用法:

泛型类型的基本用法:

type MyType<T extends number> = {
  value: T;
};

const example: MyType<number> = {
  value: 42
};

在这个例子中,T extends number 表示 T 必须是 number 类型或其子类型。

多重约束:

type MyType<T extends number | string> = {
  value: T;
};

const example1: MyType<number> = {
  value: 42
};

const example2: MyType<string> = {
  value: 'hello'
};

在这个例子中,T extends number | string 表示 T 必须是 numberstring 类型或其子类型。

通过接口进行约束

interface MyInterface {
  length: number;
}

type MyType<T extends MyInterface> = {
  data: T;
};

const example: MyType<string> = {
  data: 'hello' // Error: 'string' does not satisfy the constraint 'MyInterface'
};

const validExample: MyType<{ length: number }> = {
  data: { length: 5 }
};
  1. 在这个例子中,T extends MyInterface 表示 T 必须是实现了 MyInterface 接口的类型。

总的来说,extends 关键字用于对类型参数进行约束,确保其符合特定的条件,从而提高 TypeScript 代码的类型安全性。

标签:TypeScript,const,number,value,MyType,extends,类型
From: https://www.cnblogs.com/ht955/p/17831186.html

相关文章

  • TypeScript keyof
    keyof是TypeScript中的一个关键字,用于获取一个类型的所有键(属性名)构成的联合类型。它主要用于在类型系统中引用对象类型的键。以下是一些keyof的用法和示例:1.获取对象类型的键:typePerson={name:string;age:number;};typeKeysOfPerson=keyofPerson;/......
  • TypeScript 和 needle 库代码示例
    TypeScript和needle库编写的爬虫程序。import*asneedlefrom'needle';import{Request}from'http';constproxyHost='www.duoip.cn';constproxyPort=8000;//创建一个HTTP请求对象constreq=newRequest(',{headers:{&......
  • vuejs3.0 从入门到精通——provide、inject、mixins、extends
    provide、inject、mixins、extends一、provide二、inject三、mixins四、extendshttps://cn.vuejs.org/api/options-composition.html#mixins 一个包含组件选项对象的数组,这些选项都将被混入到当前组件的实例中。interfaceComponentOptions{mixins?:ComponentOptio......
  • TypeScript版的吴恩达的机器学习课程练习-2
    这几天看完了逻辑回归相关的课程,听着的时候感觉还算顺利,但是在进行课程练习的过程中还是花费了较长的时间,因为我画出的图形和实际出题题目后面的图形有点不太一样,所以来来回回不断地调整参数。后面才发现和学习速度α以及梯度下降次数有很大的关系。模型实现具体的模型推到就不说了......
  • Vite4+Typescript+Vue3+Pinia 从零搭建(2) - tsconfig配置
    tsconfig配置项目代码同步至码云weiz-vue3-template关于tsconfig的配置字段可查看其他文档,如typeScripttsconfig配置详解tsconfig.json文件修改如下:{"compilerOptions":{"target":"ESNext",//将代码编译为最新版本的JS"useDefineForClassFields":tr......
  • Vite4+Typescript+Vue3+Pinia 从零搭建(1) - 项目初始化
    项目初始化项目代码同步至码云weiz-vue3-template前提准备1.node版本Node.js版本>=12,如果有老项目需要旧版本的,推荐用nvm管理node版本。PSC:\Users\Administrator>nvm--version1.1.11PSC:\Users\Administrator>nvmlist*16.20.2(Currentlyusing64-bit......
  • TypeScript export named default error All In One
    TypeScriptexportnameddefaulterrorAllInOneerror//✅functiondeclare//exportdefaultfunctionapp(){return`indexapp`;};//❌variabledeclare//exportdefaultconstapp=`indexapp`;//constapp=`indexapp`;//exportdefaultapp;......
  • NodeJS系列(15)- TypeScript (二) | 对象类型 (Object Types)
    在“NodeJS系列(14)-TypeScript(一)|安装TypeScript、常用类型”里,我们简单介绍了TypeScript的安装配置,讲解和演示了TypeScript常用类型。本文继续介绍TypeScript对象类型(ObjectTypes)。TypeScript:https://www.typescriptlang.org/(中文版:https://ts.nodejs.cn/)Micro......
  • NodeJS系列(14)- TypeScript (一) | 安装 TypeScript、TypeScript 常用类型
    JavaScript现在是有史以来最广泛使用的跨平台语言之一。JavaScript最初是一种用于向网页添加微不足道的交互性的小型脚本语言,现已发展成为各种规模的前端和后端应用的首选语言。虽然用JavaScript编写的程序的大小、作用域和复杂性呈指数级增长,但JavaScript语言表达不同代码......
  • TypeScript打包构建工厂
    TS开发工厂用于开发测试typescript代码片段或工具插件,可预览并编译成多种格式嵌入不支持ts的项目Developandtestyourtypescriptcodesortools.Previewandbuildtocommonjsandesnext.Projectsetupnodeversion>=16.x.xnpminstallCompilesandhot-......