【发布时间】:2020-07-08 06:45:37
【问题描述】:
我正在尝试将索引签名类型添加到嵌套对象,以便我可以通过计算值访问它的一些属性。
例如,给定这个对象:
export const english = {
home: {
title: 'Title',
characters_list: 'Characters list',
moves: 'Moves',
header: 'Home',
search: 'Search',
},
character: {
detail: {
about: {
title: 'About',
info: 'Info',
full_name: 'Full name',
status: 'Status',
gender: 'Gender',
},
origin: {
title: 'Origin',
origin: 'Origin',
current_location: 'Current location',
},
},
},
}
我想像这样访问它的属性:
const key = 'moves';
english.home[key]
但我做不到。到目前为止,我已经能够输入第一层
export type Translation = {
[key: string]: typeof english[keyof typeof english]
}
我认为这需要某种递归方法,但我不知道如何实现它
【问题讨论】:
-
物体形状的动态部分是什么?翻译中的对象结构是否相同?只要
key是一个常量,访问english.home[key]就应该可以工作。 -
它确实在运行时工作,但我收到 TypeScript 错误,指出“字符串”不是我的对象的索引。不同的语言应该具有相同的结构,是的。对象的形状和内容是恒定的,但在某些情况下我需要使用计算键而不是直接访问元素
标签: typescript typescript-typings