BugDomain: Mapped TypesHelp Wanted
Repository metrics
- Stars
- Â (48,455 stars)
- PR merge metrics
-  (å¹³åããŒãž 6d 17h) (30d ã§ 9 merged PRs)
説æ
ð Search Terms
optional mapped type
ð Version & Regression Information
- This changed between versions 5.4.5 and 5.5.4
⯠Playground Link
ð» Code
type OptionalToUnionWithUndefined<T> = {
[K in keyof T]: T extends Record<K, T[K]>
? T[K]
: T[K] | undefined
}
type Intermediate = OptionalToUnionWithUndefined<{ a?: string }> // { a?: string | undefined }
type Literal = { a?: string | undefined } // same type as Intermediate
type Res1 = Required<Intermediate> // { a: string }
type Res2 = Required<Literal> // { a: string | undefined }
ð Actual behavior
Res1 and Res2 are different types
ð Expected behavior
they should be the same because the inputs are
Additional information about the issue
This issue may share the cause with #59902