【发布时间】:2018-05-06 18:49:16
【问题描述】:
如果我有一个字典对象,例如:
const x = {
foo: {inner: 3},
bar: {inner: 'hi'},
};
有一个不同类型的内部属性(例如这里的字符串和数字)。
然后我想将其映射到如下结构:
const y = {
foo: 3,
bar: 'hi',
};
但是我希望能够自动执行此操作而不会丢失任何类型信息。这在 Typescript 中是否可行?
我可以几乎用 lodash 到达那里:
import { mapValues } from 'lodash';
const y: Y = mapValues(x, (z) => z.inner);
然而,这最终会采用类型签名的字典中所有类型的联合:
const y: {
foo: string | number;
bar: string | number;
}
而不是想要的:
const y: {
foo: number;
bar: string;
};
【问题讨论】:
-
你写了
const y = { inner: 3, inner: 'hi', };;真的是你的意思吗? -
哎呀,你是对的,应该是:
const y = { foo: 3, bar: 'hi', };
标签: typescript