Migrating-from-JavaScript-to-TypeScript
Course Content
0 / 226 completedExercise-typeof
Who-is-the-course-for-and-prerequisites
Narrowing-via-typeof-Type-Guard
Intro-to-Type-Narrowing
Welcome
Narrowing-via-Truthiness
What-will-you-learn-in-this-course
Exercise-Narrowing-via-Truthiness
Answers-Narrowing-via-Truthiness
Narrowing-via-Equality-Checking
Answers-typeof
Exercise-Narrowing-via-Equality-Checking
Answers-Narrowing-via-Equality-Checking
Narrowing-via-the-in-Operator
Exercise-Narrowing-via-the-in-Operator
Answer-Narrowing-via-the-in-Operator
Narrowing-via-instanceOf
Exercise-Narrowing-via-instanceOf
Exercise-Narrowing-via-Control-Flow
Narrowing-via-Control-Flow
Answers-Narrowing-via-instanceOf
Answers-Narrowing-via-Control-Flow
Exercise-Narrowing-via-a-Type-Predicate
Narrowing-via-a-Type-Predicate
Answers-Narrowing-via-a-Discriminated-Union
Exercise-Narrowing-via-a-Discriminated-Union
Answers-Narrowing-via-a-Type-Predicate
Narrowing-via-a-Discriminated-Union
Narrowing-via-an-Assertion-Function
Exercise-Narrowing-via-an-Assertion-Function
Exercise-Narrowing-via-Exhaustiveness-Checking
Answers-Narrowing-via-an-Assertion-Function
Answers-Narrowing-via-Exhaustiveness-Checking
Narrowing-via-Exhaustiveness-Checking
Exercise-Narrowing-via-satisfies
Narrowing-via-satisfies
Answer-Narrowing-via-satisfies
Exercise-Narrowing-via-a-Type-Assertion
Narrowing-via-a-Type-Assertion
Answer-Narrowing-via-a-Type-Assertion
Narrowing-via-a-Non-null-Assertion
Exercise-Narrowing-via-a-Non-null-Assertion
Answers-Narrowing-via-a-Non-null-Assertion
Exercise-Typing-this
Answers-Typing-this
Typing-this
Summary
Pick-and-Omit
Exercise-Pick-and-Omit
Answers-Pick-and-Omit
Intro-to-Utility-Types
Exercise-Partial
Answers-Partial
Exercise-Required
Required
Answers-Required
Partial
Exercise-Readonly-and-ReadonlyArray
Answers-Readonly-and-ReadonlyArray
Exercise-Exclude
Exclude
Answers-Exclude
Exercise-Extract
Readonly-and-ReadonlyArray
Answers-Extract
String-Manipulation-Utilities
Exercise-String-Manipulation-Utilities
Answers-String-Manipulation-Utilities
Built-in-Utility-Types-Summary
Other-Built-in-Utility-Types
Exercise-Implementing-Generics
Third-Party-Utility-Types
Intro-to-Implementing-Generics
Generic-Function-Types
Answers-Implementing-Generics
Answers-Generic-Function-Types
Generic-Interfaces
Answers-Generic-Interfaces
Exercise-Generic-Interfaces
Generic-Classes
Answers-Generic-Classes
Exercise-Generic-Classes
Generic-Constraints-via-Extends
Exercise-Generic-Constraints-via-Extends
Answers-Generic-Constraints-via-Extends
Const-Modifier
Exercise-Const-Modifier
Exercise-Generic-Function-Types
Answers-Const-Modifier
Default-Type-Arguments
Exercise-Default-Type-Arguments
Answers-Default-Type-Arguments
Exercise-Pushing-Type-Params-Down
Answers-Pushing-Type-Params-Down
Generics-Best-Practices
Exercise-Eliminating-Needless-Type-Arguments
Exercise-Implement-a-Mapped-Type
Intro-to-Mapped-Types
Answers-Implement-a-Mapped-Type
Answers-Eliminating-Needless-Type-Arguments
Exercise-Template-Literal-Types
Template-Literal-Types
Answers-Template-Literal-Types
keyof
Pushing-Type-Params-Down
Exercise-keyof
Answers-keyof
Exericse-typeof
Answers-typeof- 2
Indexed-Access
typeof
Exercise-Indexed-Access
Answers-Indexed-Access
Exercise-Conditional-Types
Conditional-Types
Extract
Exercise-infer
Answers-Conditional-Types
infer
Answers-infer
Exercise-Looping-via-the-in-Operator
Looping-via-the-in-Operator
Answers-Looping-via-the-in-Operator
Exercise-Remapping-Properties-via-as
Remapping-Properties-via-as
Recursion-in-Mapped-Types
Answers-Remapping-Properties-via-as
Exercise-Recursion-in-Mapped-Types
Answers-Recursion-in-Mapped-Types
JS-vs-TS-Syntax-Comparision
Intro-to-Utility-Types- 2
Exercise-MyPartial
Answers-MyPartial
Exercise-MyRequired
Answers-MyRequired
Answers-MyReadonly
Exercise-MyPick
Answers-MyPick
Exercise-MyRecord
Exercise-MyReadonly
Answers-MyRecord
Exercise-MyExclude
Answers-MyExclude
Exercise-MyOmit
Exercise-MyExtract
Answers-MyExtract
Exercise-MyNonNullable
Exercise-RecursivePartial
Answers-MyNonNullable
Answers-RecursivePartial
Intro-to-Runtime-Validation
Exercise-Declaring-Zod-Schemas
Declaring-Zod-Schemas
Answers-Declaring-Zod-Schemas
Nullable-and-Optional
Zod-Utility-Types
Implementing-Custom-Validation-via-Refine
Validating-URL-Params-via-Zod
Validating-at-Runtime-in-Web-Apps
Answers-MyOmit
Validating-localStorage-via-Zod
Validating-a-File-via-Zod
Validating-Environment-Variables-via-Zod
Suggested-Next-Steps
Understanding-Decorator-Implementations
Validating-Forms-via-Zod
Intro-to-Decorators
Context-Parameter
Typing-Decorators-and-Invocation-Order
Decorating-Methods
Exercise-Decorating-Methods
Answers-Decorating-Methods
Decorating-Getters-and-Setters
Exercise-Decorating-Getters-and-Setters
Answers-Decorating-Getters-and-Setters
Exercise-Decorating-Fields
Validating-API-Responses-via-Zod
Decorating-Fields
Answers-Decorating-Fields
Answers-Decorating-Classes
Exercise-Decorating-Classes
Implementing-Universal-Decorators
Decorating-Classes
Accepting-Arguments-via-a-Decorator
Exercise-Accepting-Arguments-via-a-Decorator
Composing-Multiple-Decorators
Answers-Accepting-Arguments-via-a-Decorator
Exercise-Composing-Multiple-Decorators
Answers-Composing-Multiple-Decorators
Intro
Decorator-Tradeoffs
Exercise-Accepting-Random-Strings-via-Loose-Autocomplete
Answer-Accepting-Random-Strings-via-Loose-Autocomplete
Named-Tuples
Exercise-Named-Tuples
Accepting-Random-Strings-via-Loose-Autocomplete
Type-only-Imports-and-Exports
Answer-Named-Tuples
Understanding-Optional-Keys-vs-Optional-Values
Handling-Excess-Properties
Typing-Object.keys
Working-with-Evolving-anys
Naming-Values-and-Types-the-Same
Disabling-TypeScript-via-Comments
Working-with-JS-Array-Methods
Exercise-Simulating-Nominal-Types-via-Branded-Types
Typing-Symbols
Simulating-Nominal-Types-via-Branded-Types
Answers-Simulating-Nominal-Types-via-Branded-Types
Exercise-Testing-Types
Testing-Types
Answers-Testing-Types
Answers-Using-JSDocs-to-Type-JS-Files
Using-JSDocs-to-Type-JS-Files
Intro-to-tsconfig-Settings
Migrating-from-JavaScript-to-TypeScript
Exercise-Using-JSDocs-to-Type-JS-Files
Avoiding-Configuring-From-Scratch
Configuring-TypeScript-for-the-Strictest-Settings
Debugging-via-Sourcemaps
Optimizing-for-Performance
Intro- 2
Typing-Errors-Effectively
Linting-TypeScript
Generating-Types
Wrap-up-and-Next-Steps