Typescript 创建函数结果的并集类型
我有一些函数,我需要函数结果类型的并集类型 例子 输入函数类型: 输出类型:Typescript 创建函数结果的并集类型,typescript,redux,Typescript,Redux,我有一些函数,我需要函数结果类型的并集类型 例子 输入函数类型: 输出类型: type ResultType = {type: "INCREASE"} | {type: "ADD", by: number} 现在的 我当前的代码非常冗长,但看起来如下所示: function returntypeof<RT>(expression: (...param: any[]) => RT): RT { return {} as RT; }
type ResultType = {type: "INCREASE"} | {type: "ADD", by: number}
现在的 我当前的代码非常冗长,但看起来如下所示:
function returntypeof<RT>(expression: (...param: any[]) => RT): RT {
return {} as RT;
}
const AllTypes = {
1: returntypeof(InputType1),
2: returntypeof(InputType2),
};
type ResultType = typeof AllTypes[keyof typeof AllTypes];
函数returntypeof(表达式:(…参数:any[])=>RT:RT{
返回{}作为RT;
}
常量所有类型={
1:返回类型(输入类型1),
2:返回类型(输入类型2),
};
type ResultType=typeof AllTypes[keyof typeof AllTypes];
在variadic可用之前(并了解如何使用),现在您可以尝试以下方法:
function foo<T1, T2>(x1: T1, x2?: T2): T1 & T2 {
return {} as T1 & T2;
}
let y = foo({ a: 1 })
let x = foo({ a: 1 }, { b: 'b' })
函数foo(x1:T1,x2?:T2):T1和T2{
返回{}作为T1和T2;
}
设y=foo({a:1})
设x=foo({a:1},{b:'b'})
目前,您必须依靠overloads@unional那会是什么样子?:)
function foo<T1, T2>(x1: T1, x2?: T2): T1 & T2 {
return {} as T1 & T2;
}
let y = foo({ a: 1 })
let x = foo({ a: 1 }, { b: 'b' })