首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于函数类型的Typescript条件类型

是一种在Typescript中使用函数类型进行条件判断的特性。它允许我们根据输入的类型来确定返回的类型,并根据不同的条件返回不同的类型。

在Typescript中,我们可以使用条件类型来根据不同的类型条件进行类型推断和类型转换。它可以根据输入的类型来确定返回的类型,并且可以根据不同的条件返回不同的类型。

条件类型的语法形式为T extends U ? X : Y,其中T是待判断的类型,U是条件类型,X是满足条件时的返回类型,Y是不满足条件时的返回类型。

下面是一个示例:

代码语言:txt
复制
type TypeName<T> =
  T extends string ? "string" :
  T extends number ? "number" :
  T extends boolean ? "boolean" :
  T extends undefined ? "undefined" :
  T extends Function ? "function" :
  "object";

type TypeA = TypeName<string>; // "string"
type TypeB = TypeName<number>; // "number"
type TypeC = TypeName<boolean>; // "boolean"
type TypeD = TypeName<undefined>; // "undefined"
type TypeE = TypeName<() => void>; // "function"
type TypeF = TypeName<object>; // "object"

在上面的示例中,我们定义了一个TypeName条件类型,根据不同的输入类型返回不同的类型名称。例如,当输入类型为string时,返回的类型为"string"

基于函数类型的Typescript条件类型的优势在于它可以根据输入的类型进行精确的类型推断和类型转换,从而提高代码的类型安全性和可读性。

基于函数类型的Typescript条件类型的应用场景包括但不限于以下几个方面:

  1. 类型转换:可以根据不同的类型条件进行类型转换,例如将联合类型转换为交叉类型或反之。
  2. 类型过滤:可以根据不同的类型条件过滤出符合条件的类型,例如从联合类型中过滤出满足某个条件的子类型。
  3. 类型映射:可以根据不同的类型条件映射出不同的类型,例如将一个对象的属性类型映射为另一个对象的属性类型。

腾讯云提供了一系列与云计算相关的产品,其中包括云服务器、云数据库、云存储、人工智能等。具体推荐的产品和产品介绍链接地址如下:

  1. 云服务器(ECS):提供弹性计算能力,支持多种操作系统和应用场景。了解更多:腾讯云云服务器
  2. 云数据库(CDB):提供高可用、可扩展的数据库服务,支持多种数据库引擎。了解更多:腾讯云云数据库
  3. 云存储(COS):提供安全可靠、高扩展性的对象存储服务,适用于各种数据存储需求。了解更多:腾讯云云存储
  4. 人工智能(AI):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等。了解更多:腾讯云人工智能

以上是基于函数类型的Typescript条件类型的完善且全面的答案,希望能对您有所帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

TypeScript条件类型

条件类型(Conditional Types)是TypeScript中一种强大类型系统特性,它允许我们根据类型关系来推断和选择类型。...条件类型通常与泛型一起使用,使我们可以在类型级别上编写更加灵活和复杂代码。讲解基础用法基本语法条件类型基本语法如下:T extends U ?...根据条件结果,返回不同字符串类型。分布式条件类型条件类型还可以在联合类型上使用,这称为分布式条件类型。当我们传入一个联合类型参数时,条件类型会遍历每个成员,并根据条件进行推断。...条件类型TypeScript类型系统一个重要部分,它允许我们在类型级别上进行条件分支和类型选择。通过巧妙地组合泛型、联合类型条件类型,我们可以定义出非常复杂且强大类型。...在实际应用中,条件类型通常与内置预定义条件类型(如Exclude、Extract、NonNullable等)结合使用,以实现更加复杂和有用类型转换和操作。

25040

TypeScript条件类型(十)

TypeScript 2.8版本引入了条件类型(Conditional Types),TS条件类型可以进行类型选择,具体用法可以使用三元运算符实现,JS中三元运算符用法一样,通过判断得到最终结果,TS...条件类型最终得到是数据类型。...条件类型条件类型允许根据一个或多个条件类型进行推断,并且还能在在类型级别上进行复杂逻辑运算和类型操作。一、基本用法当T类型可以赋值给U类型时,则返回X类型,否则返回Y类型。...| {}> // "function" | "object"二、分布式条件类型条件类型中,如果被检查类型是一个 “裸” 类型参数,即没有被数组、元组或 Promise 等包装过,则该条件类型被称为分布式条件类型...R : never;定义了FunctionReturnType条件类型,它会检查类型T是否为函数类型,如果是则通过infer获取函数返回值类型R,否则返回never类型

23420
  • TypeScript函数类型

    (x,y){ return x+y; } 一个函数有输入和输出,要在 TypeScript 中对其进行约束,需要把输入和输出都考虑到,其中函数声明类型定义较简单: function sum...{ return x+y; }; 这是可以通过编译,不过事实上,上面的代码只对等号右侧匿名函数进行了类型定义,而等号左边 mySum,是通过赋值操作进行类型推论而推断出来。...在 TypeScript 类型定义中,=> 用来表示函数定义,左边是输入类型,需要用括号括起来,右边是输出类型。...==-1; } 采用函数表达式|接口定义函数方式时,对等号左侧进行类型限制,可以保证以后对函数名赋值时保证参数个数、参数类型、返回值类型不变。...在编辑器代码提示中,可以正确看到前两个提示。 注意,TypeScript 会优先从最前面的函数定义开始匹配,所以多个函数定义如果有包含关系,需要优先把精确定义写在前面。

    2K30

    TypeScript函数类型

    声明式类型函数 通过如下代码我们实现了一个返回值为number类型方法,同时我们也对返回值和参数进行了约束 function funcType(name:string,age:number):number...{ return age; } var ageNum:number=funcType("张三",18) 如果说在我们参数不确定情况下我们可以通过如下代码进行创建 function funcType1..."张三",18) 对方法进行添加默认值 function funcType2(name:string="张三",age:number=18):number{ return age; } 表达式类型函数...var funcType3=function(name:string,age:number):number { return age; } 如上代码片段是我们之前创建函数 那么我们还可以对变量进行约束...通过如下代码我们可以实现一个联合类型函数,当然这可以采用重载方式 当我们参数是number类型时我们返回值是number类型,当我们参数是string类型时我们返回值是string类型,这一块具体在我们实际业务中可以根据实际需求进行相应修改

    78920

    TypeScript函数类型

    # 声明式类型函数 通过如下代码我们实现了一个返回值为number类型方法,同时我们也对返回值和参数进行了约束 ``` function funcType(name:string,age:number...):number{ return age; } var ageNum:number=funcType("张三",18) ``` 如果说在我们参数不确定情况下我们可以通过如下代码进行创建...对方法进行添加默认值 ``` function funcType2(name:string="张三",age:number=18):number{ return age; } ``` # 表达式类型函数...``` var funcType3=function(name:string,age:number):numbe { return age; } ``` 如上代码片段是我们之前创建函数...通过如下代码我们可以实现一个联合类型函数,当然这可以采用重载方式 当我们参数是number类型时我们返回值是number类型,当我们参数是string类型时我们返回值是string类型,这一块具体在我们实际业务中可以根据实际需求进行相应修改

    75320

    TypeScript】TS条件类型(十二)

    TypeScript 2.8版本引入了条件类型(Conditional Types),TS条件类型可以进行类型选择,具体用法可以使用三元运算符实现,JS中三元运算符用法一样,通过判断得到最终结果,TS...条件类型最终得到是数据类型。...条件类型====条件类型允许根据一个或多个条件类型进行推断,并且还能在在类型级别上进行复杂逻辑运算和类型操作。一、基本用法当T类型可以赋值给U类型时,则返回X类型,否则返回Y类型。...| {}> // "function" | "object"二、分布式条件类型条件类型中,如果被检查类型是一个 “裸” 类型参数,即没有被数组、元组或 Promise 等包装过,则该条件类型被称为分布式条件类型...R : never;定义了FunctionReturnType条件类型,它会检查类型T是否为函数类型,如果是则通过infer获取函数返回值类型R,否则返回never类型

    23910

    索引类型、映射类型条件类型_TypeScript笔记12

    条件类型无非两种可能类型,所以let b: string | number = a;一定是合法(无论x是什么类型) 可分配条件类型 可分配条件类型(distributive conditional...y = x; } 条件类型类型推断 在条件类型extends子句中,可以通过infer声明引入一个将被推断类型变量,例如: type ReturnType = T extends (......TypeScript 还内置了一些常用条件类型: // 从 T 中去掉属于 U 类型部分,即之前示例中 Diff type Exclude = T extends U ?...R : any; (摘自TypeScript/lib/lib.es5.d.ts) 具体示例见Predefined conditional types 四.总结 除类型组合外,另2种产生新类型方式是类型查询与类型映射...类型查询: 索引类型:取现有类型一部分产生新类型 类型映射: 映射类型:对现有类型做映射得到新类型 条件类型:允许以类型兼容关系为条件进行简单三目运算,用来表达非均匀类型映射 参考资料 Advanced

    1.7K10

    TypeScript 条件类型精读与实践

    TypeScript 也不例外,使用条件类型可以描述输入类型与输出类型之间关系。 本文同步首发在个人博客中,欢迎订阅、交流。...工具类型 心细读者可能已经发现了 Demo 类型声明过程其实就是 TypeScript 官方提供工具类型中 Exclude 实现原理,其用于将联合类型...never : T // result 此时类型为 'a' | 'b' | 'c' type result = Demo 在箭头函数中使用条件类型 在箭头函数中使用三元表达式时...true : false) 在 TypeScript 类型定义中,若在箭头函数中使用 extends 也是同理,由于从左向右阅读习惯,也会导致阅读者对类型代码执行顺序感到困惑。...Curry, R> : R) 结合类型推导使用条件类型TypeScript 中,一般会结合 extends 来使用类型推导 infer 语法。使用它可以实现自动推导类型目的。

    72720

    TypeScript 官方手册翻译计划【九】:类型操控-条件类型

    项目地址:TypeScript-Doc-Zh,如果对你有帮助,可以点一个 star ~ 本章节官方文档地址:Conditional Types 条件类型 在大多数应用核心中,我们需要基于输入决定执行哪一个逻辑...,基于不同输入类型选择不同输出类型。...IdLabel : NameLabel; 接着,我们可以使用这个条件类型将原来重载函数简化为一个没有重载函数: function createLabel<T extends number | string...(比如某个重载函数类型)中进行推断,那么推断只会针对最后一个签名(也就是最通用情况)。...条件类型作用于泛型上时,如果给定一个联合类型,那么这时候条件类型是可分配

    80420

    TypeScript - 类型声明、枚举、函数、接口

    可定义类型 以下所写并不代表typescript数据类型,而是在使用过程中可以用作定义类型。...: 正则; Error : 错误类型; any : 任意类型; undefined : undefined; null :空类型; Function : 函数; Promise : Promise;...object : 对象类型; 为一个变量定义object类型时,意味着变量值可以为数组、函数、Date等,就像js所定义object。...interface : 接口; 该类型需要通过interface关键词来实现 enum :枚举类型; 该类型需要通过enum关键词来实现 void :空类型; 该类型规定函数返回值,代表无返回值...enum Enum { A } let a = Enum.A; let nameOfA = Enum[a]; // "A" TypeScript可能会将这段代码编译为下面的JavaScript

    1.8K10

    TypeScript 类型注解和类型推断

    一、类型注解(Type annotation) 所谓类型注解,就是人为为一个变量指定类型,例如: const a: number = 123; 在 vscode 中鼠标移入 a 出现提示,冒号后面就是类型注解...当不添加类型注解时,TypesScript 也能知道变量 a 是一个数字,这就是 TypeScript 类型推断: ?...二、类型推断(Type inference) 所谓类型推断就是 TypeScript 可以通过变量值倒推变量类型,因此在绝大部分情况下,我们是不需要去写类型注解 但有些情况类型推断是无法推断变量类型...,例如函数参数: function getSum(a, b) { return a + b; } const num = getSum(1, 2); 上面代码中参数 a,b 就无法类型: ?...从而也导致了 num 类型不能判断: ?

    1.1K30

    TypeScript 基础类型

    一、TypeScript 安装及使用 1、安装 npm i typescript -g // ts 全局包 npm i ts-node -g // 使用 ts-node 直接运行 ts...文件 2、使用 将 TypeScript 转换为 JavaScript 代码: tsc test.ts 使用 node 命令来执行 test.js 文件: $ node test.js 二、TypeScript...基础类型 1、任意类型 any 声明为 any 变量可以赋予任意类型值 let any1: any = 4 console.log(any1); // 4 any1 = false console.log...let b: null = null console.log(b); // null 11、never never 是其它类型(包括 null 和 undefined)类型,代表从不会出现值,...这意味着声明为 never 类型变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环) let x: never; // 运行错误,数字类型不能转为 never

    1.3K30
    领券