typescript返回接口的属性数据,返回类型定义

typescript返回接口的属性数据,返回类型定义,typescript,Typescript,我有一个函数,我想从一个接口构成的数据对象中查询数据。 此函数应解析数据对象中的属性数据。如果我有任何as返回类型,这是可行的,但是应该有更好的方法,其中返回类型将是属性的类型 我的做法如下: 在这里,我只返回接口所有属性的联合类型,但是我应该返回我要返回的属性类型。您应该将getData设置为泛型,然后对参数和返回值重复使用泛型类型: interface Rofl { name:string, id:number, } const data: Rofl = { name:&q

我有一个函数,我想从一个接口构成的数据对象中查询数据。 此函数应解析数据对象中的属性数据。如果我有任何as返回类型,这是可行的,但是应该有更好的方法,其中返回类型将是属性的类型

我的做法如下:


在这里,我只返回接口所有属性的联合类型,但是我应该返回我要返回的属性类型。

您应该将
getData
设置为泛型,然后对参数和返回值重复使用泛型类型:

interface Rofl {
  name:string,
  id:number,
}

const data: Rofl = {
  name:"lol",
  id:1,
};

function getData<T extends keyof Rofl>(property: T): Rofl[T] {
  return data[property];
}


const lol:string = getData("name");
接口Rofl{
名称:string,
身份证号码:,
}
常数数据:Rofl={
名字:“lol”,
id:1,
};
函数getData(属性:T):Rofl[T]{
返回数据[属性];
}
const lol:string=getData(“名称”);

您应该使用与typescript Playerd中相同的技术:扩展
keyof
的泛型。顺便说一句,有一个机会你发布了错误的链接到游乐场:它与你的代码没有任何共同之处。嗨,我不太清楚你的意思,你能进一步解释吗?我点击了链接,它至少为我重定向到相同的代码。Typescript保存了你在网站上写的最后一个代码。您看到了正确的代码,因为这是您编写的最后一段代码,但由于您的链接未正确导出,其他人不会看到。好的,我更改了它,您现在应该看到正确的代码。这正是我要查找的!thx:)