如何获取打字稿记录中的值的键

时间:2019-11-19 07:53:24

标签: javascript reactjs typescript

代码如下:

export type Period = 'dy' | 'wk' | 'mn' | 'qt' | 'yr';

const periods: Record<Period, string> = {
    dy: 'Day',
    wk: 'Week',
    mn: 'Month',
    qt: 'Quarter',
    yr: 'Year'
  };

当我尝试这样做时:

const key = Object.keys(periods).find(key => periods[key] === 'Day');

我当然会出错,因为periods[key]无法保证key的类型正确。我该如何真正去做呢?我想到了一个枚举,但是我无法进行反向查找。我要实现的只是一个输入字段,该字段显示“ Day”,但具有键dy(等等),可以将状态设置为正确的键,而不是在用户选择另一个值时的值。

1 个答案:

答案 0 :(得分:1)

router_generate返回Object.keys而不是string[](其中Array<keyof T>是传入值的类型)。 here概述了其原因。

由于您的对象可能不会具有未知的键,因此可以使用类型断言:

T

Playground Link