具有可变数量参数的函数的通用打字稿

潘克

我有一个接受任意数量类的函数。

function findObjects(...Classes) { ... }

所有类都继承自一个Component类。该函数以某种方式搜索作为这些类实例的对象。

如何为具有可变数量参数的函数实现模板?

它应该是这样的:

function findObjects(...Classes): [...Classes] { ... }

这对于正确定义类型和正确操作智能感知是必要的。

福特04

您可能需要查看元组 rest 参数,它们用于模拟具有可变数量参数的函数一个可能的解决方案:

// We pass in a tuple of classes. This tuple is generically typed (type parameter T)
// { new(...arg: any): any } is constructor function type for a class
function findObjects<T extends { new(...arg: any): any }[]>(...cls: T): Partial<T> {
  // search for objects that are instances of these classes; return filtered classes
}

class Component { c = "c" }
class A extends Component { a = "a" }
class B extends Component { b = "b" }

const res = findObjects(A, B) // [(typeof A | undefined)?, (typeof B | undefined)?]

对于我使用的返回类型Partial<T>,它是一个带有传入类的可选元素映射元组它包含undefined在索引处,如果相应的类项被您的findObjects实现过滤掉(根据需要调整返回类型)。

操场

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有可变数量/参数类型的函数的TypeScript声明文件

具有可变数量参数的OCaml函数

如何创建具有可变数量的参数的函数?

如何创建带有可变数量的参数的函数变量?

枚举可以具有可变数量的参数吗?

python 2.7,具有位置,关键字参数以及可变数量的参数(任意参数列表)的函数

Julia + JuMP:函数的可变数量的参数

如何编写具有可变数量的输出参数的匿名函数?

在LLVM中,如何插入/声明具有可变数量的参数的函数?

如何创建具有可变数量的类型参数的模板?

打字稿:通用函数类型转换所有函数参数

Python咖喱函数具有可变数量的参数

如何使用指针编写具有可变数量的参数的函数?

Pascal函数参数的可变数量

具有可变数量和参数类型的C ++函数作为另一个函数的参数

具有可变数量ifelse中断的R函数

如何从类似的函数调用具有可变数量的参数的函数?

具有可变数量参数的函数的指针

创建带有可变数量参数的函数

具有可变数量的numpy数组的Python函数

具有可变数量参数的 Concat CString

具有可变数量的特定模板类型参数的模板函数

函数中可变数量的参数

如何将具有可变数量参数的函数分配给单个变量?

如何在 Python 中使用字符串作为函数参数并具有可变数量的参数

具有可变数量表标题的 DataTables 呈现函数

如何在打字稿中将参数从一个具有可变参数的函数传递到另一个具有可变参数的函数?

具有可变数量参数的 f 字符串?

打字稿可变参数泛型类,接受扩展公共基础的可变数量的类对象?