Typescript 是否可以将泛化类型转换为并集

Typescript 是否可以将泛化类型转换为并集,typescript,typescript-typings,Typescript,Typescript Typings,请告诉我是否可以在不手动指定特定值的情况下推断最后一种类型(任务) 接口动作{ 移动:数字, 吃:绳子 } 接口任务{ 行动:A, 值:动作[A], } 任务类型=任务|任务; 您可以使用keyof操作符作为任务的泛型来创建联合类型 type Tasks = Task<keyof Action> type Tasks=Task 您可以为操作中的每个键创建一个带有任务的联合类型。所以您不需要设置Task |…|手动执行任务: type DesiredTasks = keyof Act

请告诉我是否可以在不手动指定特定值的情况下推断最后一种类型(任务)

接口动作{
移动:数字,
吃:绳子
}
接口任务{
行动:A,
值:动作[A],
}
任务类型=任务|任务;

您可以使用
keyof
操作符作为任务的泛型来创建联合类型

type Tasks = Task<keyof Action>
type Tasks=Task
您可以为
操作
中的每个键创建一个带有
任务
的联合类型。所以您不需要设置
Task |…|手动执行任务

type DesiredTasks = keyof Action extends infer I ? I extends keyof Action ? Task<I> : never : never
// type DesiredTasks = Task<"move"> | Task<"eat"> 
// same as { action: "move"; value: number; } | { action: "eat"; value: string; }
type DesiredTasks=keyof Action扩展推断I?我知道行动的方向吗?任务:永不:永不
//类型DesiredTasks=任务|任务
//与{action:“move”;value:number;}{action:“eat”;value:string;}相同
为什么不执行任务? 所有属性值类型合并在一起,例如,不再工作:

type Tasks = Task<keyof Action> // {action: "move" | "eat"; value: string | number; }

declare const t1: Tasks
if (t1.action === "eat") t1.value // value: string | number, no good...

declare const t2: DesiredTasks
if (t2.action === "eat") t2.value // value: string ✔
type Tasks=Task/{action:“move”|“eat”;value:string | number;}
声明常量t1:任务
如果(t1.action==“eat”)t1.value//value:string | number,则不好。。。
声明常数t2:DesiredTasks
if(t2.action==“eat”)t2.value//value:string✔

对不起,我简化了这个示例—真实示例