Type checking refers to the process of verifying whether the usage of types in a program is consistent with their definitions. It helps catch errors at compile-time by ensuring that operations are performed on compatible types.
Static typing is when variable types are checked at compile-time rather than runtime.
Dynamic Typing: Dynamic typing is when variable types are checked at runtime rather than compile-time.
Type Inference: Type inference allows the compiler or interpreter to automatically determine the data type based on context without explicit type declarations.