在这个例子中:
type Action<T extends string, P = never> = {
type: T;
} & ([P] extends [never]
? {}
: {
payload: P;
});
为什么我们需要在条件周围加上方括号[P] extends [never]
,如果我们不这样使用它有什么区别P extends never
?
我明白这种类型在做什么,只是找不到解释为什么我们实际上需要方括号以及为什么没有方括号就不起作用。
编辑:让我尝试更简单的例子:
type GetTest<T = never> = [T] extends [never] ? string : number;
type Test = GetTest; // type Test = string;
这里type Test = string
正如预期的那样。但我没有得到的是,当我们没有方括号时,条件会发生什么,我们没有得到,string
但我们也没有得到 a number
,相反,我们得到了type Test = never
type GetTest<T = never> = T extends never ? string : number;
type Test = GetTest; // type Test = never