Closed as not planned
Description
🔎 Search Terms
first type argument second type argument optional cannot be inferred
optional type argument wrongly inferred
when first type argument is passed, second one is not inferred
🕗 Version & Regression Information
Occurs on 5.4.0
⏯ Playground Link
💻 Code
function createObject<
T extends string = string,
O extends Record<T, () => any> = Record<T, () => any>
> (keys: T[], obj: O) {
return obj
}
const res = createObject(['foo', 'bar'], {
foo: () => 'asd',
bar: () => 'asd'
})
// const res: {
// foo: () => string;
// bar: () => string;
// }
const res2 = createObject<'foo' | 'bar'>(['foo', 'bar'], {
foo: () => 'asd',
bar: () => 'asd'
})
// const res2: Record<"foo" | "bar", () => any>
🙁 Actual behavior
When the first type argument is passed, the second one is not inferred properly.
🙂 Expected behavior
The inferrence of the two code examples should be identical.
Additional information about the issue
No response