如何为映射对象编写TypeScript`get`函数?

如何为映射对象编写TypeScript`get`函数?,typescript,Typescript,可以在TypeScript中执行类似的操作吗 interface IPerson { name: string; age: number; } declare class Map<T> { get(name: keyof T): any // ? return type } interface-IPerson{ 名称:字符串; 年龄:人数; } 声明类映射{ get(name:keyof T):任意/?返回类型 } 我需要的结果 const map = new Ma

可以在TypeScript中执行类似的操作吗

interface IPerson {
  name: string;
  age: number;
}

declare class Map<T> {
  get(name: keyof T): any // ? return type
}
interface-IPerson{
名称:字符串;
年龄:人数;
}
声明类映射{
get(name:keyof T):任意/?返回类型
}
我需要的结果

const map = new Map<IPerson>();
map.get("name"); // string
map.get("age"); // number
const map=newmap();
map.get(“name”);//一串
map.get(“年龄”);//数

name
参数是扩展
keyof T
的泛型参数,然后您的返回类型可以使用该参数索引
T
,以获得正确的类型。例如:

interface IPerson {
  name: string;
  age: number;
}

declare class MyMap<T> {
  get<K extends keyof T>(name: K): T[K]
}

// Result I need

const map = new MyMap<IPerson>();
map.get("name"); // string
map.get("age"); // number
interface-IPerson{
名称:字符串;
年龄:人数;
}
声明类MyMap{
get(名称:K):T[K]
}
//我需要的结果
const map=new MyMap();
map.get(“name”);//一串
map.get(“年龄”);//数


考虑将您的类命名为除<代码> MAP>代码>之外,因为它很容易与内置的JavaScript <代码> MAP< /Cord>对象混淆,如果存在,将与TypeScript的内置类型冲突:<代码> MAP>代码>。< <代码> >名称>代码>参数是扩展< <代码>代码>的泛型,然后您的返回类型可以使用它来索引

T
,以获得正确的类型。例如:

interface IPerson {
  name: string;
  age: number;
}

declare class MyMap<T> {
  get<K extends keyof T>(name: K): T[K]
}

// Result I need

const map = new MyMap<IPerson>();
map.get("name"); // string
map.get("age"); // number
interface-IPerson{
名称:字符串;
年龄:人数;
}
声明类MyMap{
get(名称:K):T[K]
}
//我需要的结果
const map=new MyMap();
map.get(“name”);//一串
map.get(“年龄”);//数


考虑将您的类命名为除<代码> MAP>代码>之外,因为它很容易与内置的JavaScript <代码> MAP< /Cord>对象混淆,如果存在,将与TypeScript的内置类型冲突:<代码> MAP>代码>。它应该是

Map
。在我的示例中,Map是我自己的类。这不是标准的地图类。它只能包含像
keyof T
这样的键,并且每个值都在传入对象类型中定义了类型,并且根据键的不同,您的贴图没有很好地定义。它应该是
Map
。在我的示例中,Map是我自己的类。这不是标准的地图类。它只能包含像
keyof T
这样的键,每个值都有在传入对象类型中定义的类型,这取决于键。非常感谢!这正是我需要的。非常感谢!它满足我的需要