This solution is generated by ChatGPT, correctness is not guaranteed. You might also be able to find a solution fromcommunity posts.
AI solution for TypeScript puzzle on BFE.dev
2. implement Required<T>
Here is a possible solution to implement MyRequired<T>
:
type MyRequired<T> = { [P in keyof T]-?: T[P]}
In this solution, we use the -?
modifier in the mapped type syntax to make all properties required.
By applying MyRequired<Foo>
to the example above, we get:
const a: MyRequired<Foo> = {}// Error: Property 'a' is missing and required in type 'MyRequired<Foo>'const b: MyRequired<Foo> = { a: 'BFE.dev'}// Error: Property 'b' is missing and required in type 'MyRequired<Foo>'const c: MyRequired<Foo> = { b: 123}// Error: Property 'c' is missing and required in type 'MyRequired<Foo>'const d: MyRequired<Foo> = { b: 123, c: true}// Error: Property 'a' is missing and required in type 'MyRequired<Foo>'const e: MyRequired<Foo> = { a: 'BFE.dev', b: 123, c: true}// valid
As expected, all properties of Foo
are now required in MyRequired<Foo>
.