首页 > 解决方案 > 用户变量值作为类型

问题描述

我尝试输入redux动作创建者。我有如下动作类型:

// @flow
export const SET_USER_TOKEN = "SET_USER_TOKEN";
export const SET_TOKEN_IN_COOKIES = "SET_TOKEN_IN_COOKIES";

现在我想创建一种动作创建者:

import * as actions from "./actions";

type SetUserTokenAction = {
  type: actions.SET_USER_TOKEN,
  token: string
};

问题出在type财产上,我不能像上面那样做。我必须使用文字字符串吗?

我知道可以为整个对象做类似的事情:

type ActionTypes = $Keys<typeof user>;

我想对一个简单的字符串变量的值做同样的事情。

标签: reduxflowtype

解决方案


您可以使用typeof运算符:

type SetUserTokenAction = {
  type: typeof actions.SET_USER_TOKEN,
  token: string
};

唯一需要注意的是也要输入 const (否则其类型解析string):

export const SET_USER_TOKEN: 'SET_USER_TOKEN' = 'SET_USER_TOKEN';

推荐阅读