【发布时间】:2021-10-03 12:02:11
【问题描述】:
是否可以基于第一个参数类型有一个分生孢子所需的参数类型:
type ConditionalRequiredArg<T, P> = T extends string ? P | undefined : P;
function func<T, P>(_arg1: string | number, _arg2: ConditionalRequiredArg<T, P>) {}
func('foo'); // Error: Expected 2 arguments, but got 1.
理论上,上述函数不应该需要第二个参数,但它确实需要!
编辑:我知道“?”对于可选参数类型,但我想有条件地利用编译器错误和建议。
【问题讨论】:
-
为什么要定义一个可选类型并期望函数的可选参数行为?您可以通过放置一个 ?在参数的末尾如下: function func
(_arg1: string | number, _arg2?: ConditionalRequiredArg ) -
更多的是好奇和尝试的可能性。我知道我可以使用“?”使其成为可选的,但我希望它是有条件的,以便用户知道何时需要第二个参数。
标签: typescript function-parameter conditional-types