繁体   English   中英

TypeScript - 分布式条件类型

[英]TypeScript - Distributive conditional types

说话很便宜,显示代码,顺便说一下。 我测试的ts版本是4.6.4

type ITypeA = ((args: { A: any }) => any) | ((args: { B: any }) => any);

type Test<T> = T extends (args: infer A) => any ? A : never;

// type Result1 = {
//     A: any;
// } | {
//     B: any;
// }
type Result1 = Test<ITypeA>;

// type Result2 = {
//     A: any;
// } & {
//     B: any;
// }
type Result2 = ITypeA extends (args: infer A) => any ? A : never;

Result1可能在 ts 中使用 'distributive conditional types' 规则,所以type Result1 = { A: any;} | { B: any;} type Result1 = { A: any;} | { B: any;}

我的问题是为什么Result2不应用这条规则? 它们之间有什么区别吗?

游乐场链接

请参阅文档

当条件类型作用于泛型类型时,它们在给定联合类型时变得具有分配性。 例如,采用以下内容:

有一个要求,你需要对generic采取行动。

Result2作用于已知类型,没有泛型,而Result1使用Test ,后者又使用generic T

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM