Тип Typescript для объекта, значения свойств которого должны совпадать с именами свойств?

#typescript #typescript-typin&s

#typescript #typescript-typin&s

Вопрос:

Возможно ли определить тип Typescript для объекта, который должен иметь values значения, равные именам его свойств?

Нравится:

 const ACTION_TYPES= {
  UPDATE_STATE_A: "UPDATE_STATE_A",
  UPDATE_STATE_B: "UPDATE_STATE_B",
  UPDATE_STATE_C: "UPDATE_STATE_C",
  // AND SO ON...
}
  

Примечание: Это все строки. Как свойства, так и значения.

Как я могу определить такой тип?

Комментарии:

1. Каков здесь вариант использования? Похоже, что это имело бы больше смысла в качестве перечисления .

2. Привет, это для ACTION_TYPES объекта. Итак, это {UPDATE_SOME_STATE: "UPDATE_SOME_STATE"} и т.д. Как я мог бы решить это с помощью enum ? Я читал документы, но до сих пор никогда не использовал перечисления.

Ответ №1:

Да, это возможно:

 type Stran&eType<T extends {[key:strin&]:strin&}&&t; = {
  [key in keyof T]: key
}

const test: Stran&eType<{name:'t'}&&t;= {
  name: 'name'
}
  

Комментарии:

1. Спасибо! Существует ли аналогичное решение без обобщений?

2. Я не в курсе, но не думаю, что это возможно.

3. Ваше решение требует, чтобы я заранее знал имена свойств? Как вы сделали с name ?

4. Теперь вы поняли, к чему я клоню. Насколько я знаю, вы не можете сделать это на месте, извините