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

如何根据参数类型获取函数的返回类型?

根据参数类型获取函数的返回类型可以通过使用 TypeScript 中的条件类型来实现。条件类型是一种在类型系统中进行条件判断的方式,可以根据不同的条件返回不同的类型。

下面是一个示例代码,展示了如何根据参数类型获取函数的返回类型:

代码语言:txt
复制
type ReturnTypeIfPromise<T> = T extends Promise<infer R> ? R : T;
type ReturnTypeIfArray<T> = T extends Array<infer R> ? R : T;

function getReturnType<T>(func: (...args: any[]) => T): ReturnTypeIfPromise<ReturnTypeIfArray<T>> {
  return {} as any;
}

// 示例函数
function add(a: number, b: number): number {
  return a + b;
}

// 获取函数的返回类型
type ResultType = ReturnTypeIfPromise<ReturnTypeIfArray<typeof add>>;
console.log(ResultType); // 输出:number

在上述示例中,我们定义了两个条件类型 ReturnTypeIfPromiseReturnTypeIfArrayReturnTypeIfPromise 用于判断函数返回类型是否为 Promise,如果是,则返回 Promise 的泛型参数类型;否则返回原始类型。ReturnTypeIfArray 用于判断函数返回类型是否为数组,如果是,则返回数组元素的类型;否则返回原始类型。

然后,我们定义了 getReturnType 函数,它接受一个函数作为参数,并使用条件类型来获取函数的返回类型。在示例中,我们传入了 add 函数,并使用 getReturnType 函数获取了 add 函数的返回类型。

需要注意的是,上述示例中的 getReturnType 函数仅返回了一个空对象,实际应用中需要根据具体情况进行相应的处理。

此外,还需要注意的是,以上示例中的代码是使用 TypeScript 编写的,如果要在 JavaScript 中实现类似的功能,可以考虑使用其他方式,如使用 typeof 运算符获取函数的返回类型。

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

相关·内容

类型挑战】获取函数返回类型,难度⭐️⭐️

题目分析: 题目地址:2-medium-return-type 如上图所示,我们需要设计一个通用了类型工具还提取函数类型返回类型,功能同内置ReturnType。...题目解答: 测试用例: 给出测试用例挺多但是没有特殊需要说明,我们只需要通过设计类型工具取出到通过Equal来进行比较即可。...1 : 2 答案及解析: 其实在上一题中我们已经提取到函数类型参数类型了,我们这次修改为提取返回类型即可,我们此次传入类型T可以使用泛型约束输入,也不可不用约束,因为我们还是会用到条件类型来进行判断...同样采用条件类型+infer来进行提取,将infet占位return位置,用R来代替,如果T可分配到右侧则返回R,否则返回never; /* _____________ 你代码 __________...R : never; 复制代码 接下来一题是:【类型挑战】实现 Omit,难度⭐️⭐️

1.2K40

【Kotlin】函数 ⑧ ( 函数引用 作为函数参数 | ::函数名 | 函数类型 作为函数返回类型 )

文章目录 一、函数引用作为函数参数 二、函数类型作为函数返回值 一、函数引用作为函数参数 ---- 函数 作为参数 , 有两种方式 : 传递 Lambda 表达式 , 也就是 匿名函数 作为参数值 ;...与 使用 函数引用 作为参数 , 其效果是相同 ; fun main() { // 定义函数类型变量, 之后作为函数参数传递给函数 // 该匿名函数变量, 可以作为参数 val...---- 函数 返回类型 , 也可以是 函数类型 ; 也就是说 匿名函数 , Lambda 表达式 可以作为 函数返回值 ; 代码示例 : 下面的代码中 , returnFun 函数返回值...是一个函数类型 (String)->String , 返回是一个 匿名函数 Lambda 表达式 ; 使用 var fun0 变量 接收 上述函数 返回 Lambda 表达式 , 并执行该 匿名函数...; fun main() { // 接收函数类型返回值 var fun0 = returnFun(); // 执行 返回 函数 var str = fun0("Tom

2.6K10

C语言指针做函数参数,指针做函数返回类型

有时候我们可以使用函数返回值来回传数据,在简单情况下是可以,但是如果返回值有其它用途(例如返回函数执行状态量),或者要回传数据不止一个,返回值就解决不了了,所以要引用上指针来传递。...指针做函数参数: 在C语言中,函数参数不仅可以是整数、小数、字符等具体数据,还可以是指向它们指针。...指针函数返回类型: 程序编译后,每个函数都有执行第一条指令地址即首地址,称[函数指针。函数指针即指向函数指针变量,要间接调用函数可以使用指针变量来实现。...int (*pf)(int, int); 通过将pf与括号中“*”强制组合组合在一起,表示定义pf是一个指针,然后与下面的“()”再次组合,表示是该指针指向一个函数,括号里表示为int类型参数,...因此,pf是指向函数指针,该函数返回值为int。函数指针与返回指针函数含义大不相同。函数指针本身是一个指向函数指针。指针函数本身是一个返回值为指针函数

2.5K20

【Python】函数进阶 ① ( 函数返回多个返回值 | 函数参数传递类型简介 | 位置参数 | 关键字参数 )

一、函数返回多个返回值 在函数中 , 如果要 返回 多个返回值 , 可以 在 return 语句中 , 设置多个返回值 , 这些返回值之间使用 逗号 隔开 , 这些返回类型是 元组 tuple 类型...= multiple_return() # 返回值: (1, 2, 3), 返回类型: print(f"返回值: {result}, 返回类型: {type(result...'tuple'> 1 2 3 二、函数参数传递类型 函数参数传递类型 : 位置参数 : 函数 调用时 按照参数函数 定义时 位置进行传递 ; ( 形参 和 实参 顺序 和 个数 必须一一对应 ) 关键字参数...: 函数 调用时 使用 " 键 = 值 " 形式 , 传入参数 ; 缺省参数 : 不定长参数 : 1、位置参数函数定义时 定义了 " 位置参数 " , 那么调用该函数时 , 传入参数 必须...按照 参数函数定义位置进行传递 ; 定义时 形参参数 与 调用时 传递实参参数 顺序 和 个数 必须一致 ; 如果 传递参数 次序 或者 个数 错了 , 那么编译时就会报错 ; 代码示例 :

1.1K10

【Kotlin】函数类型 ( 函数类型 | 带参数名称参数列表 | 可空函数类型 | 复杂函数类型 | 带接收者函数类型 | 函数类型别名 | 函数类型实例化 | 函数调用 )

函数类型 ---- 函数类型格式 : 圆括号中定义 参数类型列表 , 使用 -> 由参数列表指向返回类型 , 表示接受 参数类型列表 中参数 , 返回 返回类型 返回值 ; ( 参数类型列表 )...复杂函数类型 : ① 参数返回值是普通类型 : 如果函数参数类型返回类型都是普通类型还好 , 解读起来不是很困难 ; ② 参数返回值是函数类型 : 如果函数类型参数类型返回类型中有函数类型...类型参数 , 将返回返回类型返回值 ; ③ 本质 : 实例化该 带接收者函数类型 变量时 , 相当于为该接收者类型定义了一个扩展函数 ; 2 ....{ return a + b } // 将顶层 add 函数赋值给 add3 函数类型变量 :: 用于获取顶层定义函数 // 如果获取 类中定义函数 , 可以使用 类名::函数获取...函数类型自动推断 ---- 1 . 变量类型推断 : Kotlin 中变量类型可以不用显示声明 , 可以根据其赋值类型进行智能类型推断 ; 2 .

2.6K10

【Python】类型注解 ④ ( 函数类型注解 | 函数形参类型注解语法 | 函数返回类型注解 )

一、函数形参类型注解 1、函数中由于类型缺省导致提示问题 由于定义 函数 时 , 没有为 函数形参 设置 类型注解 , 编写函数时 , PyCharm 工具无法提示没有类型形参 : 在定义函数时..., 如果没有指定函数参数类型 , 那么定义函数时 , 调用 形参 成员 , 是无法进行代码提示 , 我们想要为 fun 函数定义一个 list 列表容器类型形参 data , 但是没有显示指定该..., 调用函数时 , PyCharm 无法提示函数形参类型 : 在 调用 fun 函数时 , 代码提示只能提示参数名称是 data , 具体参数是什么类型 , 是不知道 , PyCharm 也无法提示参数类型...---- 1、函数返回类型注解语法 函数返回类型注解语法 : def 函数名称(形参列表) -> 返回类型: pass 函数 返回类型注解 , 在 函数形参列表后 , 使用 -> 指定 返回类型...; 返回 类型注解 , 是建议性 , 不是强制性 , 不按照注解类型返回 , 也不会报错 ; 示例 : # 函数形参 设置 类型注解 def add(x: int, y: int) ->

24610

【C++】函数 指针类型参数 与 引用类型参数 对比 ( 修改外部变量需要传入参数要求 | 参数返回值 )

指针与引用类型参数 II . 指针作为参数返回值 III . 引用参数简介 IV . 引用作为参数返回值 I . 博客总结 . 指针与引用类型参数 ---- 1 ....讨论问题 : 本章只针对一点进行讨论 , 那就是对两种类型参数修改 , 是否影响到外部变量 ; 传入什么样参数才能修改外部变量 , 即 参数返回值使用 ; 2 ....C 语言中参数 分类 : ① 普通变量参数 : C 语言中 普通变量 ( 非指针变量 ) 作为参数 , 只能进行值传递 , 不能通过参数返回结果 ; ② 指针变量参数 : C 语言中 , 如果要让函数参数可以将结果返回...C++ 中引用参数 : C++ 在 C 语言基础上扩展了 引用 数据类型 , 使用引用可以替代上面的指针作为参数情况 , 使参数具有返回结果能力 ; 3 ....引用作为参数返回值 ---- 引用作为参数返回值 : 如果是引用作为参数 , 修改 N 维指针指向地址 , 那么需要传入 N 维指针引用即可 ,在函数中修改该引用 , 即可修改外部被引用变量

2.1K20

Python 函数参数类型

1.前言 Python 中函数参数类型比较丰富,比如我们经常见到 *args 和 **kwargs 作为参数。...初学者遇到这个多少都有点懵逼,今天我们来把 Python 中函数参数进行分析和总结。 2.Python 中函数参数 在 Python 中定义函数参数有 5 种类型,我们来一一演示它们。...2.1 必选参数 必须参数是最基本参数类型,当你在 Python 函数中定义一个必选参数时,每次调用都必须给予赋值,否则将报错。...2.3 可变参数 有很多场景我们不确定参数个数,也就是说参数是可变。首先你可能会想到使用 list 或者 tuple (元组)来封装多个参数,但是如何才能从函数语义上看出这是一个可变参数呢?...总结 Python 函数具有非常灵活参数形态,既可以实现简单调用,又可以传入非常复杂参数。其中也有不少细节,参数类型也是学习 Python 函数一个关键知识点。

3.3K20

父类返回子类类型函数写法

不过由于我们这个 Event 类型比较多,因此希望写一个父类,来一个子类感受下: class DisposableEventBuilder : EventBuilder() { private....build() 我们调用完父类 retryLimit 方法后,想要设置下 delay,结果发现没有这个方法。 “我 X,这什么玩意儿”,你嘟囔了一句。 因为返回是父类,所以链式调用掉链子了。...= retryLimit return this as T } abstract fun build(): PollingEvent } 这个泛型给父类加了一个泛型参数...,这个参数则必须是当前类子类,那么这样的话我们就可以在返回自身类型位置返回 T 这个类型了。...子类改动就很简单了,只需要给父类加一个泛型参数为自己类型即可: class DisposableEventBuilder : EventBuilder

4.7K10

函数出错返回数据类型

函数出错返回数据类型有4中情况:错误码、NULL值、空对象、异常对象。 1. 错误码 C语言中没有异常这样语法机制,返回错误码便是最常用出错处理方式。...当函数返回数据是字符串类型或者集合类型时候,我们可以用空字符串或空集合替代 NULL 值,来表示不存在情况。这样,我们在使用函数时候,就可以不用做 NULL 值判断。...抛出异常对象 最常用函数出错处理方式是抛出异常。异常有两种类型:受检异常和非受检异常。 至于孰好孰坏,只需要根据团队开发习惯,在同一个项目中,制定统一异常处理规范即可。...对于函数抛出异常,我们有三种处理方法:直接吞掉、直接往上抛出、包裹成新异常抛出。 返回 NULL 值还是异常对象,要看获取不到数据是正常行为,还是异常行为。...如果函数是 public ,你无法掌控会被谁调用以及如何调用(有可能某个同事一时疏忽,传递进了 NULL 值,这种情况也是存在),为了尽可能提高代码健壮性,我们最好是在 public 函数中做 NULL

2.1K20

Python函数参数类型和用法

Python函数之所以很好用,还有一点就能传递参数实现不同场景灵活使用,对于函数参数类型小编总结了6种不同形式。下面来一一学习下。...(m - n) test(5, 3) test(985, 211) 三、关键字参数 通过一个函数把一个字符串反复输出n次,注意这里n代表未知次数,字符串也是未知字符串,我们从这个题目就可以看出来,一定属于一个多参数函数...五、不定长参数 - 元组 如果一个函数不知道未来要接收多少个参数时候可以使用一个元组来接受不定长参数,下面来直接实现效果。...(3, 5, 7)) test(3, 5, 7) 注意这里两个调用结果都是元组,但是结果不太一样,看看返回结果。...# 这里不能加** test(a=3, b=5, c=7) 返回结果: {'a': 3, 'b': 5, 'c': 7} 上面两种不定长参数可以放在一起使用,表示可以接受任意参数

1.7K20

python之函数其他类型参数

这样不仅可以实现代码复用,还可以使代码更有条理性,增加代码可靠性。下面我们来介绍一下python函数位置参数、关键字参数,不定长参数相关内容。...---- 二、位置参数 调用函数时,实参和形参顺序必须严格一致,并且实参和形参数量必须相同。 例:运行以下程序,分析运行结果。...---- 三、关键字参数 关键字参数是指调用函数参数传递方式,是一种按参数名字传递值方式。使用关键字参数允许函数调用时参数顺序与定义时不一致,Python解释器能够用参数名匹配参数值。...printinfo(age=, name="runoob") ---- 四、不定长参数 通常在定义一个函数时,若希望函数能够处理比定义时更多参数,此时可以在函数中使用不定长参数。...---- 五、参考 1、廖雪峰官网 2、python官网 3、Python编程案例教程 ---- 六、总结   以上就是就是关于python函数位置参数、关键字参数,不定长参数相关内容,可以参考一下

1.1K20
领券