- What is TypeScript and how does it enhance JavaScript?
- What are the three components of TypeScript?
- What is the difference between JavaScript and TypeScript?
- What is static typing in TypeScript?
- What are some user-defined data types in TypeScript?
- Describe discriminated unions in TypeScript and their use in modeling state.
- What is an interface in TypeScript?
- What are access modifiers in TypeScript?
- What is the 'any' type in TypeScript and how is it used?
- When is the 'void' type used in TypeScript?
- What is the 'unknown' type in TypeScript and how does it differ from 'any'?
- How are generic types implemented in TypeScript?
- What is a module in TypeScript?
- How do arrays work in TypeScript?
- What are primitive types in TypeScript and how do they differ from built-in types?
- Demonstrate the syntax for a function with type annotations in TypeScript.
- How are objects created in TypeScript?
- Does TypeScript support all object-oriented principles?
- How are class constants defined in TypeScript?
- Demonstrate function overloading in TypeScript with an example.
- What is a Tuple in TypeScript?
- What is an Enum in TypeScript?
- Explain the 'never' type in TypeScript and provide an example of its use.
- How does type assertion work in TypeScript?
- How to define a class in TypeScript?
- How do optional parameters work in TypeScript functions?
- How do default parameters work in TypeScript?
- How do union types work in TypeScript?
- How do interfaces with optional properties work in TypeScript?
- How does Type Inference work in TypeScript?
- How can you implement getter and setter-like behavior in TypeScript functional components?
- Explain the concept of mixins in TypeScript with an example.
- Describe namespaces in TypeScript.
- How does inheritance work in TypeScript?
- Explain abstract classes in TypeScript.
- How do static properties and methods work in TypeScript, and how can we achieve similar functionality in functional components?
- Explain conditional types in TypeScript and their use cases.
- Describe the concept of mapped types in TypeScript with an example.
- How does the 'keyof' operator function in TypeScript?
- Describe TypeScript's handling of null and undefined with strict null checks.
- What are decorators in TypeScript? Provide examples of their usage in classes, methods, and properties.
- What are the key differences between type aliases and interfaces in TypeScript? When would you prefer one over the other?
- Explain TypeScript's built-in utility types. Provide examples of how to use Partial<T>, Required<T>, Pick<T, K>, Omit<T, K>, and Record<K, V>.
- What are type guards in TypeScript? Demonstrate different techniques for creating type guards including typeof, instanceof, in operator, and custom type predicates.
- What is the 'satisfies' operator in TypeScript and how does it improve type safety compared to type assertions?
- How do const assertions work in TypeScript? Provide examples of when and why you would use 'as const'.
- What are template literal types in TypeScript? Show how they can be used to create more precise string types and type-safe APIs.
- Explain the most important TypeScript configuration options in tsconfig.json. What do 'strict', 'target', 'module', 'baseUrl', and 'paths' control?
- How do you work with JavaScript libraries that don't have built-in TypeScript types? Explain declaration files (.d.ts) and ambient declarations.
Estimated time: 12 hours