这是代码:
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
(等),并且可以将状态设置为正确的键,而不是在用户选择另一个值时将该值设置为正确的值。
Object.keys
string[]
不返回Array<keyof T>
(T
传入的值的类型在哪里)。这里概述了原因。
由于您的对象可能不会具有未知的键,因此可以使用类型断言:
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) as Array<Period>).find(key => periods[key] === 'Day');
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句