我试图创建一个函数,它有两个参数,这两个参数应该是相同的类型。这个类型可以是一个类型列表中的任何一个,这些类型本身就是一个字符串字面量列表。
type A = "A1" | "A2" | "A3";
type B = "B1" | "B2" | "B3";
type Union = A | B;
type params<T> = T extends Union ? {input: T, output: T} : never;
function test(params: params<Union>) {
...
}
字符串
预期:
type params<Union> = {input: A, output: A} | {input: B, output: B}
型
发生了什么:
type params<Union> = {input: "A1", output: "A1"} | {input: "A2", output: "A2"} | {input: "A3", output: "A3"} | {input: "B1", output: "B1"} | {input: "B2", output: "B2"} | {input: "B3", output: "B3"}
型
1条答案
按热度按时间laik7k3q1#
不要将unioned类型传递到
params<T>
泛型。而是创建接受两个单独类型的类型泛型-InputOutputUnion<A, B>
:字符串
您还可以使用更通用的解决方案,允许多个联合:
型