TypeScript未正确执行类型推导的原因咨询
TypeScript未正确执行类型推导的原因咨询
最近写TypeScript的时候碰到了个类型推导的坑,搞了半天没弄明白为啥预期的推导逻辑没生效,先把我的类型定义贴出来:
type Type1<V> = {type: "type-1", v: V, foo?: (v: V) => void}; type Type2<K, G> = {type: "type-2", k: K, g: G, foo?: (k: K, g: G) => void}; type ArgsFactory<T> = ( T extends Type1<infer V> ? Type1<V> : T extends Type2<infer K, infer G> ? Type2<K, G> : T extends (Type1<unknown> | Type2<unknown, unknown>) ? T : Type1<unknown> | Type2<unknown, unknown> );
我本来想着ArgsFactory<T>能根据传入的T类型,精准匹配对应的Type1或Type2分支,自动提取出V、K、G的具体类型,但实际测试的时候发现,类型推导要么直接落到最后的联合类型分支,要么没法正确识别泛型参数。有没有大佬能帮忙分析下这是哪里的问题呀?
备注:内容来源于stack exchange,提问作者Cristofer
相关产品推荐
相关产品推荐

