可变参数后元组中的可选函数参数
Optional function parameter in tuple after variadic
我被这个简单的问题困住了:
declare function Foo<T extends string[]>(...s: [...T, number?]): void;
Foo("");
/* error: Argument of type '""' is not assignable to parameter of type 'number | undefined'.(2345) */
Foo(1); // ok
Foo("", 1); // ok
为什么第一个函数调用不起作用,而最后一个元组元素是可选的?
我也试图通过签名重载来解决这个问题,但也没有成功。
我不太清楚为什么当前版本不能正常工作。它实际上允许你传入一个空字符串,只要你不依赖推理:
Foo<[""]>("");
但这显然有点麻烦,所以我明白为什么它可能不可取
以下类型可能适合您;它适用于您提供的案例,我还没有发现它有任何问题:
declare function Foo<T extends string[]>(...s: [...T] | [...T, number]): void;
我被这个简单的问题困住了:
declare function Foo<T extends string[]>(...s: [...T, number?]): void;
Foo("");
/* error: Argument of type '""' is not assignable to parameter of type 'number | undefined'.(2345) */
Foo(1); // ok
Foo("", 1); // ok
为什么第一个函数调用不起作用,而最后一个元组元素是可选的? 我也试图通过签名重载来解决这个问题,但也没有成功。
我不太清楚为什么当前版本不能正常工作。它实际上允许你传入一个空字符串,只要你不依赖推理:
Foo<[""]>("");
但这显然有点麻烦,所以我明白为什么它可能不可取
以下类型可能适合您;它适用于您提供的案例,我还没有发现它有任何问题:
declare function Foo<T extends string[]>(...s: [...T] | [...T, number]): void;