Как использовать ключи объекта в интерфейсе? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть интерфейс для избыточного действия, который использует action_types , хранящиеся в объекте.Но это не позволяет мне сделать.

const action_types = {
  USER_SUCCESS: 'USER_SUCCESS',
  USER_REQUEST: 'USER_REQUEST'    
}

interface IUpdateUser {
  type: action_types.USER_SUCCESS,    // Returns error
  payload:{
    value: string
  }
}

Есть ли что-то, что я пропускаю?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Вы должны превратить action_types в перечисление:

enum action_types {
  USER_SUCCESS = 'USER_SUCCESS',
  USER_REQUEST = 'USER_REQUEST' 
}

interface IUpdateUser {
  type: action_types.USER_SUCCESS,
  payload:{
    value: string
  }
}

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

0 голосов
/ 05 февраля 2019

Синтаксис неверен для доступа к типу свойства.Вам нужно использовать [] для доступа к типам свойств и typeof для получения типа константы.

const action_types = {
  USER_SUCCESS: 'USER_SUCCESS' as 'USER_SUCCESS',
  USER_REQUEST: 'USER_REQUEST' as 'USER_REQUEST'    
}

interface IUpdateUser {
  type: typeof action_types['USER_SUCCESS'],    // ok
  payload:{
    value: string
  }
}


interface IUpdateUser {
  type: typeof action_types['USER_SUCCESS'],    // ok
  payload:{
    value: string
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...