我有一个Redux动作的界面,该界面使用存储在对象中的 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
}
}
有什么我想念的吗?
答案 0 :(得分:0)
访问属性类型的语法错误。您需要使用[]
访问属性类型,并使用typeof
获取const的类型。
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
}
}
答案 1 :(得分:0)
您应该将action_types
变成一个枚举:
enum action_types {
USER_SUCCESS = 'USER_SUCCESS',
USER_REQUEST = 'USER_REQUEST'
}
interface IUpdateUser {
type: action_types.USER_SUCCESS,
payload:{
value: string
}
}
这样,当您在操作类型上使用switch
时,也可以进行详尽的检查。