Also known as: static typing · type checking · TypeScript
A type system is a set of rules that assigns types to program constructs and verifies their consistent use, catching a class of errors before the program runs in statically-typed languages, or during execution in dynamically-typed ones.
Static typing shifts a category of failure from runtime to compile time, which matters most as codebases outgrow what a single developer can hold in their head. The cost is front-loaded effort and reduced flexibility during rapid prototyping.
Gradual typing systems such as TypeScript and Python's type hints allow incremental adoption, letting teams add annotations progressively rather than committing wholesale — a pragmatic middle ground that drove much of TypeScript's adoption.
Rust
Rust is a systems programming language that guarantees memory safety without garbage collection, using a compile-time ownership and borrowing model to eliminate entire classes of bugs including use-after-free and data races.
Static Analysis
Static analysis examines source code without executing it, detecting bugs, security vulnerabilities, and style violations by reasoning about possible program behaviours.
Technical Debt
Technical debt is the accumulated future cost of choosing an expedient implementation over a better one, analogous to financial debt in that it carries ongoing interest in the form of slower development and higher defect rates.
Compiler
A compiler translates source code written in one language into another form — typically machine code or bytecode — performing analysis and optimisation along the way.