Typescript “联合型函数”;超载“;不起作用

Typescript “联合型函数”;超载“;不起作用,typescript,typescript-typings,typescript-generics,Typescript,Typescript Typings,Typescript Generics,我试图通过将函数设置为union函数类型来“重载”函数,以便给定参数的类型设置返回对象中成员数据的类型。但它抛出了一个错误: type FN1=(a:string)=>{data:string}; 类型FN2=(b:number)=>{data:number}; 常数fn:FN1 | FN2=c=>({data:c}); fn(“某些字符串”); ^^^^^^^^^^^^^{data:string}{data:number} 为什么类型的参数从不?有没有其他方法可以让它成为可能 这是泛型的一个

我试图通过将函数设置为union函数类型来“重载”函数,以便给定参数的类型设置返回对象中成员
数据的类型。但它抛出了一个错误:

type FN1=(a:string)=>{data:string};
类型FN2=(b:number)=>{data:number};
常数fn:FN1 | FN2=c=>({data:c});
fn(“某些字符串”);
^^^^^^^^^^^^^{data:string}{data:number}
为什么
类型的参数从不
?有没有其他方法可以让它成为可能


这是泛型的一个很好的例子,因为可以从输入类型轻松键入返回类型

对于任何值:

const fn = <T>(c: T): {data: T} => ({data: c});
constfn=(c:T):{data:T}=>({data:c});
仅限字符串和数字:

const fn = <T extends string | number>(c: T): {data: T} => ({data: c});
constfn=(c:T):{data:T}=>({data:c});

根据您的需要,我只需使用一个通用函数:

function fn1<T>(data: T) {
  return { data };
}
function fn1(data:string): {data: string};
function fn1(data:number): {data: number};
function fn1(data: any): any {
    return {data};
}

fn1("some string");
fn1(1);