在typescript中使用泛型时获取错误消息
我在typescript的操场上收到了下面代码的错误消息在typescript中使用泛型时获取错误消息,typescript,generics,Typescript,Generics,我在typescript的操场上收到了下面代码的错误消息 函数fn(x:T):M{ 返回[x]; } 我如何解决这个问题?我是否以错误的方式使用了泛型 对于简单的代码我很抱歉,我遇到的实际情况如下: type M<T> = { [key: string]: T }; function create<T>(names: string[], value: T): M<T> { return names.reduce((a: M<T>,
函数fn(x:T):M{
返回[x];
}
我如何解决这个问题?我是否以错误的方式使用了泛型
对于简单的代码我很抱歉,我遇到的实际情况如下:
type M<T> = { [key: string]: T };
function create<T>(names: string[], value: T): M<T> {
return names.reduce((a: M<T>, c: string): M<T> => (a[c] = value, a), {} );
}
type M={[key:string]:T};
函数create(名称:string[],值:T):M{
返回names.reduce((a:M,c:string):M=>(a[c]=value,a),{});
}
我想将代码更改为:
function create<T, M = { [key: string]: T }>(names: string[], value: T): M {
return names.reduce((a: M, c: string): M => (a[c] = value, a), {} );
}
函数创建(名称:string[],值:T):M{
返回names.reduce((a:M,c:string):M=>(a[c]=value,a),{});
}
您实际上不需要第二个类型参数:
function create<T>(names: string[], value: T): Record<string, T> {
return names.reduce((a, c) => (a[c] = value, a), {} as Record<string, T>);
}
函数创建(名称:string[],值:T):记录{
返回names.reduce((a,c)=>(a[c]=value,a),{}作为记录);
}
**记录
只是一个to{[key:string]:T}
为什么需要第二个类型参数?只是
函数fn(x:T){return[x];}
真正的代码更复杂,我只是做了一个简单的例子,并在操场上运行了它。
function create<T>(names: string[], value: T): Record<string, T> {
return names.reduce((a, c) => (a[c] = value, a), {} as Record<string, T>);
}