Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 使用字符串枚举为接口提供索引_Typescript - Fatal编程技术网

Typescript 使用字符串枚举为接口提供索引

Typescript 使用字符串枚举为接口提供索引,typescript,Typescript,在Typescript中,我想利用我的字符串枚举: 因此,它的字符串值在对象上提供类型检查约束,如下所示: const mutations: IDictionary<VuexMutation> = { ['registration/REGISTER'](state, payload) { state.registration = { meta: { serverValidated: false

在Typescript中,我想利用我的字符串枚举:

因此,它的字符串值在对象上提供类型检查约束,如下所示:

const mutations: IDictionary<VuexMutation> = {
    ['registration/REGISTER'](state, payload) {
        state.registration = {
            meta: {
                serverValidated: false
            },
            value: payload
        };
    },
    ['registration/REGISTER_COMPLETED'](state) {
        state.registration.meta.serverValidated = true;
    }
};
在上面的示例中,IDictionary接口允许我键入对象vlue的值,但允许任何字符串索引

您可以在构造中使用键:

export const enum MutationKeys {
  registerUser = 'registration/REGISTER',
  registerUserCompleted = 'registration/REGISTER_COMPLETED'
}

type MutationDictionnary<P> = {
  [key in MutationKeys]: P
}

const mutations: MutationDictionnary<VuexMutation> = {
  ['registration/REGISTER'](state, payload) {
    state.registration = {
      meta: {
        serverValidated: false
      },
      value: payload
    };
  },
  ['registration/REGISTER_COMPLETED'](state) {
    state.registration.meta.serverValidated = true;
  }
};
您可以在构造中使用键:

export const enum MutationKeys {
  registerUser = 'registration/REGISTER',
  registerUserCompleted = 'registration/REGISTER_COMPLETED'
}

type MutationDictionnary<P> = {
  [key in MutationKeys]: P
}

const mutations: MutationDictionnary<VuexMutation> = {
  ['registration/REGISTER'](state, payload) {
    state.registration = {
      meta: {
        serverValidated: false
      },
      value: payload
    };
  },
  ['registration/REGISTER_COMPLETED'](state) {
    state.registration.meta.serverValidated = true;
  }
};