diff --git a/.changeset/chatty-onions-decide.md b/.changeset/chatty-onions-decide.md new file mode 100644 index 00000000..b1aec215 --- /dev/null +++ b/.changeset/chatty-onions-decide.md @@ -0,0 +1,5 @@ +--- +"@hiogawa/utils": patch +--- + +Fix `objectMapValues` mapped type diff --git a/packages/utils/src/lodash.test.ts b/packages/utils/src/lodash.test.ts index 2c232568..04d29353 100644 --- a/packages/utils/src/lodash.test.ts +++ b/packages/utils/src/lodash.test.ts @@ -468,9 +468,8 @@ describe(`${objectMapValues.name}/${objectMapKeys.name}`, () => { const result = objectMapValues(o, (v, k) => (v ? k.repeat(v) : "bad-v")); expectTypeOf(result).toEqualTypeOf<{ x: string; - // TODO: these should be optional - y: string; - z: string; + y?: string; + z?: string; }>(); expect(result).toMatchInlineSnapshot(` { diff --git a/packages/utils/src/lodash.ts b/packages/utils/src/lodash.ts index fd217c45..2be10e9c 100644 --- a/packages/utils/src/lodash.ts +++ b/packages/utils/src/lodash.ts @@ -314,7 +314,7 @@ function objectMapEntries( export function objectMapValues( o: T, f: (v: T[keyof T], k: keyof T) => V -): Record { +): { [k in keyof T]: V } { return objectMapEntries(o, ([k, v]) => [k, f(v, k)]); }