typescript泛型问题:对象的key是 某个数组的 元素,对象定义时泛型怎么写?

#1

const enum tableType {
LOGIC_TABLE = ‘LOGIC_TABLE’,
LOGIC_DIM_TABLE = ‘LOGIC_DIM_TABLE’,
LOGIC_FACT_TABLE = ‘LOGIC_FACT_TABLE’,
LOGIC_SUM_TABLE = ‘LOGIC_SUM_TABLE’,
}
const tableTypeText: Record<TableType, string> = {
[TableType.LOGIC_TABLE]: ‘string’,
[TableType.LOGIC_DIM_TABLE]: ‘string’,
[TableType.LOGIC_FACT_TABLE]: ‘string’,
[TableType.LOGIC_SUM_TABLE]: ‘string’,
};
如果说像上面这样的对象tableTypeText,它的key都是枚举类型tableType的元素值,那么对象的泛型约束可以这么写Record<TableType, string>。
但是如果tableType不是enum,而是一个数组tableType = [ ‘LOGIC_TABLE’, ‘LOGIC_DIM_TABLE’, ‘LOGIC_FACT_TABLE’, ‘LOGIC_SUM_TABLE’ ],而对象tableTypeText的key都是这个数组的元素值,
那么对象tableTypeText的泛型约束怎么写?

#2

const list = [‘a’, ‘b’, ‘c’] as const;
const data: Record<typeof list[number], string> = {
a: ‘123’,
b: ‘3dfs’,
c: ‘fdsgds’,
d: ‘sad’,
};
知道怎么写了,这样就对了