登录
首页 >  文章 >  前端

TypeScript泛型Textendsunknown[]详解

时间:2025-03-03 16:15:18 199浏览 收藏

本文探讨TypeScript泛型`T extends unknown[]`的含义及应用。`T extends unknown[]`限定泛型类型参数T必须是数组或元组类型,确保函数参数数量与预期一致,避免参数个数错误。文章通过`call`函数的示例,详细解释了该约束如何提升类型安全,并分析了参数不足或超出的错误原因,帮助开发者理解并正确使用此泛型约束。 学习此技巧,能有效提升TypeScript代码的健壮性和可读性。

TypeScript 中 T 泛型是否强制 extends unknown[]

在 TypeScript 中,泛型 T 继承自 unknown[] 的含义是什么?我们通过一个例子来进一步理解。

示例:

function call(
  f: (...args: T) => R,
  ...args: T
): R {
  return f(...args)
}

function fill(length: number, value: string): string[] {
  return Array.from({ length }, () => value)
}

let aa = call(fill, 10, 'a')
let bb = call(fill, 10) // 报错:缺少必需参数
let cc = call(fill, 10, 'a', 'z') // 报错:参数过多

在示例中,call 函数的泛型类型参数 T 继承自 unknown[], 这意味着 T 必须是一个数组或元组类型。

错误原因:

  • 第二行: bb 调用缺少一个必需的参数,因为 fill 函数需要两个参数,而 call 函数的参数数组 args 是一个数组。
  • 第三行: cc 调用传递了三个参数,而 call 函数的参数数组 args 被限定为 T,T 只允许两个元素。

结论:

在 TypeScript 中,T extends unknown[] 意味着泛型类型参数 T 必须是一个数组或元组类型。此限制确保了 args 参数数组始终与 f 函数的预期参数数量相匹配。

今天关于《TypeScript泛型Textendsunknown[]详解》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>