对象的Typescript类型,其属性值应与属性名称匹配吗?

问题描述

是否可以为应该为其values与其属性名称相等的对象定义Typescript类型?

赞:

const ACTION_TYPES= {
  UPDATE_STATE_A: "UPDATE_STATE_A",UPDATE_STATE_B: "UPDATE_STATE_B",UPDATE_STATE_C: "UPDATE_STATE_C",// AND SO ON...
}

注意:都是字符串。属性和值。

如何定义这种类型?

解决方法

是的,这是可能的:

type StrangeType<T extends {[key:string]:string}> = {
  [key in keyof T]: key
}

const test: StrangeType<{name:'t'}>= {
  name: 'name'
}