Typescript “联合型函数”;超载“;不起作用
我试图通过将函数设置为union函数类型来“重载”函数,以便给定参数的类型设置返回对象中成员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} 为什么类型的参数从不?有没有其他方法可以让它成为可能 这是泛型的一个
数据的类型。但它抛出了一个错误:
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);