Typescript 确保两个元组参数具有相同数量的元素

Typescript 确保两个元组参数具有相同数量的元素,typescript,Typescript,我想要这样的东西: 功能测试(a:something,b:something){…} 测试([1,2],[3,4])//这没问题 测试([1,2],[3,4,5])//这不正常。参数有不同的长度。应该抛出错误 test([1,2,3,4,5],[6,7,8,9,10])/这也可以,长度本身并不重要,只是相等 在TypeScript中有可能吗?我想更改something类型以实现此功能,而不是在运行时执行此操作。执行以下操作: 通过说T extensed unknown[]|[unknown]

我想要这样的东西:

功能测试(a:something,b:something){…}
测试([1,2],[3,4])//这没问题
测试([1,2],[3,4,5])//这不正常。参数有不同的长度。应该抛出错误
test([1,2,3,4,5],[6,7,8,9,10])/这也可以,长度本身并不重要,只是相等
在TypeScript中有可能吗?我想更改
something
类型以实现此功能,而不是在运行时执行此操作。

执行以下操作:

  • 通过说
    T extensed unknown[]|[unknown]
  • b
    T&{length:T['length']}
  • declare函数测试(a:T,b:T&{length:T['length']}):void;
    
    请执行以下操作:

  • 通过说
    T extensed unknown[]|[unknown]
  • b
    T&{length:T['length']}
  • declare函数测试(a:T,b:T&{length:T['length']}):void;
    

    我认为不可能。我认为不可能。非常感谢。最后我用了类似的东西。但是,这会导致元素失败,而不是整个元组。您能帮助我理解什么是导致元素失败吗?顺便说一句,我创建了一个用于异构列表的不同版本。在这里找到:非常感谢。最后我用了类似的东西。但是,这会导致元素失败,而不是整个元组。您能帮助我理解什么是导致元素失败吗?顺便说一句,我创建了一个用于异构列表的不同版本。在这里找到它:
    declare function test<T extends unknown[] | [unknown]>(a: T, b: T & { length: T['length'] }): void;