与Typescript的Record<string, any>等效的DataWeave类型是什么?
在DataWeave中,你可以通过开放式动态键类型声明实现和TypeScript Record<string, V>完全等效的类型定义,语法为{ [key: 键类型]: 值类型 }。
具体实现步骤
- 先定义你固定的的值类型,以你给出的示例中
{answer: Number}结构为例:
type AnswerItem = { answer: Number }
- 定义通用的字符串键映射类型,等效于TS的
Record<string, V>:
type StringRecord<V> = { [key: String]: V }
- 实际使用时直接传入值类型即可:
// 该类型匹配所有键为任意字符串、值为AnswerItem结构的对象 type MyCustomMap = StringRecord<AnswerItem>
效果验证
你给出的示例对象完全符合MyCustomMap的类型校验:
{ "foo": { "answer": 42 }, "bar": { "answer": 1337 }, "this key could be any string": { "answer": 1 } } as MyCustomMap // 类型校验通过
如果某个键的值不符合AnswerItem结构,比如把answer字段改为字符串类型,DataWeave会直接抛出类型错误,符合预期。
内容的提问来源于stack exchange,提问作者Doug Ayers
相关产品推荐
相关产品推荐

