【发布时间】:2021-07-05 18:49:52
【问题描述】:
下面的代码可以输入正确吗?
function arrayElementTypes(...array: Array<(() => string) | (() => number) | (() => {prop: string}) | (() => number[])>) {
/// .. do something
/// .. and then return an array with each functions result
return array.map(arg => arg())
}
const [varA, varB, varC] = arrayElementTypes( () => "", () => ({prop: "prop"}), () => [1,2,3] )
// how can this be typed appropriately so that the :
// varA: string
// varB: {prop: string}
// varC: number[]
【问题讨论】:
-
很难知道“输入正确”是什么意思。您正在传递一组具有不同参数计数的函数,因此
array.map(arg => arg())对于数组联合中的最后一个函数类型无效。您也只传入 3 个函数,但正在寻找一个长度为 4 的返回数组。您是否希望将返回的数组解构为单独的类型(好像它是一个元组)或函数的返回类型的交集(好像它是一个数组)? -
更正了示例。
标签: javascript arrays typescript typescript-generics