为什么TypeScript在这种情况下不能正确地假设变量“setSortableFields”类型?
在下面代码的注解部分提供了更多细节
export type TesteProps<
SortableFields extends (true|false)
> = (
{
pending: boolean,
sortedFields: object,
sortableFields: SortableFields
}
) & (
SortableFields extends true ? {
setSortedFields: object
} : {
setSortedFields?: never
}
);
export function Teste<
SortableFields extends (true|false)
>(
props: TesteProps<SortableFields>
) {
if (props.sortableFields) {
const setSortableFields /* here it auto completes with (Object | undefined) instead of assuming it as an Object since the "sortableFields" param is true */ = props.setSortedFields;
console.log(setSortableFields);
}
return <>{JSON.stringify(props)}</>;
}
字符串
1条答案
按热度按时间fumotvh31#
1.我想你应该用另一种方式声明泛型,以避免在你的类型使用过程中重新声明它。(我不知道这是必要的还是仅仅是美观的改进)
1.老实说,我不能提供答案的问题"为什么"。我也经常有这样的期望,所以问题.但下面的代码是工作
字符串