TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
Let me try to recall ...
TypeScript provides static typing, better tooling, and improved code maintainability.
Let us take a moment ...
The file extension for TypeScript files is .ts.
Hmm, what could it be?
You can compile a TypeScript file using the 'tsc' command.
Hmm, what could it be?
It is a configuration file for TypeScript that specifies compiler options.
I think, we know this ...
Interfaces define the structure of an object.
This sounds familiar ...
'interface' is used for object types, while 'type' can define any type.
I think I can do this ...
Enums are a way to define a set of named constants.
Let me think ...
The 'any' type allows a variable to hold any type of value.
I think, I can answer this ...
The 'unknown' type is a safer alternative to 'any'.
Let me think ...
The 'never' type represents values that never occur.
I think, I can answer this ...
TypeScript automatically infers the type of a variable.
Hmm, what could it be?
Generics allow you to create reusable components with type safety.
This sounds familiar ...
'const', and 'var' in TypeScript?,'let' and 'const' are block-scoped, while 'var' is function-scoped.
Hmm, what could it be?
You define a function using the 'function' keyword and optionally specify parameter and return types.
Let me try to recall ...
A union type allows a variable to hold one of several types.
This sounds familiar ...
A type alias is a name for any type, defined using the 'type' keyword.
Let us take a moment ...
Mapped types allow you to create new types by transforming existing ones.
I think, I can answer this ...
These are access modifiers that control the visibility of class members.
Let us take a moment ...
Decorators are special annotations used to modify classes, methods, or properties.
Let us take a moment ...
The 'readonly' modifier makes a property immutable after initialization.
This sounds familiar ...
'Partial' makes all properties of a type optional.
I think, I know this ...
'Pick' creates a new type by selecting specific properties from an existing type.
Let us take a moment ...
'Omit' creates a new type by excluding specific properties from an existing type.
I think, we know this ...
An abstract class can have implementation, while an interface cannot.
Let me think ...
The 'keyof' operator returns a union of the keys of a type.
Let us take a moment ...
'Record' creates a type with specified keys and values of a specific type.
Let us take a moment ...
Type assertion allows you to override TypeScript's inferred type.
I think, I know this ...
'unknown' is safer than 'any' because it requires type checking before use.
Let me try to recall ...
'extends' is used for inheritance, while 'implements' is used to enforce an interface.
Let me think ...
Conditional types allow you to create types based on a condition.
I think, we know this ...
Template literal types allow you to create new string types by combining string literals.
I think, we know this ...
The 'infer' keyword is used in conditional types to infer a type variable.
This sounds familiar ...
Utility types are built-in types that help manipulate other types.
I think, we know this ...
'Exclude' removes specific types from a union type.
Let me think ...
'Extract' selects specific types from a union type.
Let me think ...
'NonNullable' removes 'null' and 'undefined' from a type.
Let us take a moment ...
'ReturnType' extracts the return type of a function.
Let me think ...
'InstanceType' extracts the instance type of a constructor function.
Hmm, what could it be?
Index signatures define the type of keys and values in an object.
Let me think ...
The 'this' type represents the type of the current object.
I think, I know this ...
Tuple types allow you to define an array with fixed types and lengths.
This sounds familiar ...
Discriminated unions use a common property to distinguish between types in a union.
I think, I can answer this ...
The 'as const' assertion makes an object or array readonly and infers literal types.
I think, we know this ...
Module augmentation allows you to add new declarations to an existing module.
I think, we know this ...
Declaration merging combines multiple declarations with the same name into one.
I think, I know this ...
Ambient declarations define types for external libraries or modules.
I think, I can answer this ...
'namespace' is for internal modules, while 'module' refers to external modules.
I think, we know this ...
The 'unknown' type is a safer alternative to 'any' and requires type checking.
I think, I can answer this ...
'strict' mode enables all strict type-checking options for better type safety.
Hmm, let me see ...