const validValuesByDataType: any = {
[DataTypes.STRING]: [
ValueType.CALL,
ValueType.PUT,
],
...
}
const values: any = {
[ ValueType.CALL ]: {value: 'call', label: 'CALL'},
[ ValueType.PUT ]: {value: 'put', label: 'PUT'},
...
}
我想根据数据类型获取有效值。哪个是['call', 'put']
const valueMap = validValuesByDataType[fieldType];
valueMap.map((o: any) => values[o].value); => I got "call" and "put" printing.
如何获取值的数组?我想要某种形式的东西。
[ ...values.concat[type] ]
如果您有其他更好的结构,我们将不胜感激。
另外,我在定义每个对象的类型时遇到了麻烦。请随时添加任何评论!
答案 0 :(得分:1)
如果您使用的JavaScript版本足够新,那么Array.prototype.flatMap可使您的值映射变得容易。
strAnswer = prompt( "message", "default", eePromptMultiline );
function test(fieldType: DataTypes) {
const valueMap = validValuesByDataType[fieldType];
valueMap.flatMap(o => values[o].value);
}
和ValueType
似乎是枚举,可以用作类型。打字稿类型Record
描述了一个对象,其中所有键都是一种类型,而所有值都是另一种类型。这就是我们将用于查找对象的东西。
DataType
枚举是完全可以的,没有问题,但是由于您询问了其他结构,因此替代方法是将值类型和数据类型定义为字符串文字。
这两者具有相同的效果:
const validValuesByDataType: Record<DataTypes, ValueType[]>
const values: Record<ValueType, {value: stringlabel: string;}>
const valueTypes = ['CALL', 'PUT'] as const;
type ValueType = typeof valueTypes[number]; // evaluates to "CALL" | "PUT"