打字稿:定义对象键值的返回

时间:2019-12-07 11:27:28

标签: javascript typescript

我有一个名为getSpecificPlacementOption的方法,我想定义其返回值。不幸的是我对Typescript还是很陌生,所以我不确定如何定义它。我有一个名为placementOptions的对象,我想返回的是其特定键之一的特定值:

export interface PlacementOptions {
  badgeOptions?: BadgeOptions;
  cardLayoutOptions?: CardLayoutOptions;
}

const getSpecificPlacementOption = (key: placementOptionsKey) => placementOptions[key];

如何定义此方法placementOptions[key]的返回?

1 个答案:

答案 0 :(得分:1)

// Return type could instead be inferred
function getSpecificPlacementOption<T extends keyof PlacementOptions>(key: T): PlacementOptions[T] {
  return placementOptions[key];
}

const getSpecificPlacementOption2: <T extends keyof PlacementOptions>(key: T) => PlacementOptions[T]
  = key => placementOptions[key];

更简单,但是TypeScript不知道返回哪个属性,只有一些是:

const getSpecificPlacementOption =
    (key: keyof PlacementOptions) => placementOptions[key];