44 items
Broken Mutable Mapped Type
Code QuizDistributive Conditional Types Over Unions
QuizAdvanced Types: Unions to Mapped Types
Slides / VideoConditional Types & Distribution
FlashcardNarrowing, Utility Types & Type Guards
Slides / VideoNarrowing, Utility Types & Type Guards
FlashcardUnion, Intersection & Utility Types
Slides / VideoUnion, Intersection & Utility Types
FlashcardHigher-Order Type Manipulation Basics
Flashcardunique symbol Type
FlashcardType Compatibility and Assignability
FlashcardBranded/Nominal Types
Flashcardtypeof Type Operator
FlashcardVariance (Covariance/Contravariance)
FlashcardThe satisfies Operator
FlashcardType Widening and Narrowing
FlashcardStructural Typing
FlashcardFunction Overloads
FlashcardRemapping Keys With as
Code QuizVariance: Covariance and Contravariance
Slides / VideoMapped Types
Slides / VideoThe infer Keyword Explained
Slides / VideoConditional Types
Slides / VideoIndexed Access Types
Slides / VideoThe keyof Type Operator
Slides / VideoThe typeof Type Operator
Slides / VideoUser-Defined Type Guards
Slides / VideoType Guards and Narrowing
Slides / VideoDiscriminated Unions
Slides / VideoType Aliases in TypeScript
Slides / VideoLiteral Types in TypeScript
Slides / VideoIntersection Types in TypeScript
Slides / VideoUnion Types in TypeScript
Slides / VideoBranded Types via Intersection
Slides / Videoconst Assertions in TypeScript
Slides / VideoAssertion Functions
Slides / VideoThe unknown Type and Safe Narrowing
Slides / VideoThe never Type in Advanced Contexts
Slides / VideoDistributive Conditional Types
Slides / VideoRecursive Types in TypeScript
Slides / VideoAdvanced Utility Types
Slides / VideoTypeScript Utility Types Essentials
Slides / VideoTemplate Literal Types
Slides / VideoKey Remapping with as Clause
Slides / VideoRemapping Keys With as
A key-remapping mapped type fails because Capitalize receives a non-string key.
type Person = { name: string; age: number };
// Goal: { getName: () => string; getAge: () => number }
type Getters<T> = {
[K in keyof T as `get${Capitalize<K>}`]: () => T[K];
};
type PersonGetters = Getters<Person>;What is the bug preventing this remapped type from compiling?