0

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

这是我的方法: 编码

在此处输入图像描述

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

4

1 回答 1

1

您应该使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");

https://www.typescriptlang.org/play?ssl=16&ssc=29&pln=16&pc=33#code/JYOwLgpgTgZghgYwgAgEoHsYBtkG8CwAUMsiHALYQBcAzmFKAOYA0RJwAJlSAK7kBG0VoQC+RIgnQg6yDnDBwqaTDgC8eNqQrUARFnRYdw9lwCMwkQG5xhGDxAIwwKckYQwAEXlwAPABVkCAAPSBAOGmQAawgAT0xlbAA+AAoAByh0VOgwGKU-AEolDGwAbT8AXQ1iZCh3HigQWW8S9MzsmPLrURsJKRl9LFp6JmR1N09vZJ0ySh18rt7pAwgAOn1GZIH5oA

于 2020-12-25T01:24:51.553 回答