代码之家  ›  专栏  ›  技术社区  ›  Tomasz Mularczyk

用户变量值作为类型

  •  1
  • Tomasz Mularczyk  · 技术社区  · 6 年前

    我试着打字 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 财产,我不能像上面那样做。我必须使用文字字符串吗?

    我知道做类似的事情 whole object :

    type ActionTypes = $Keys<typeof user>;
    

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Aleksey L.    6 年前

    你可以用 typeof 操作人员:

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

    唯一需要注意的是也要键入const( otherwise its type resolved 作为 string ):

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