Lab 01: Type-Level Programming

Time: 30 minutes | Level: Advanced | Docker: docker run -it --rm node:20-alpine sh

Recursive types, variadic tuple types, type-safe curry, HList, Awaited<T> pattern, TypeScript 4.7+/5.x inference improvements.


Step 1: Setup

docker run -it --rm node:20-alpine sh
npm install -g typescript ts-node
mkdir /lab-adv01 && cd /lab-adv01
cat > tsconfig.json << 'EOF'
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "moduleResolution": "node",
    "strict": true,
    "esModuleInterop": true
  }
}
EOF

Step 2: Recursive Types


Step 3: Variadic Tuple Types


Step 4: Type-Safe Curry


Step 5: HList (Heterogeneous List)


Step 6: Awaited and Promise Inference


Step 7: TypeScript 5.x Features


Step 8: Capstone — Type-Level Utilities

Run:

📸 Verified Output:


Summary

Feature
Syntax
TS Version

Recursive type

type F<T> = T extends ... ? F<...> : ...

4.1+

Variadic tuple

[...T, ...U]

4.0+

Tuple head/tail

[infer H, ...infer T]

4.0+

Type curry

Curry<Args, Return> recursive

4.0+

Awaited

Awaited<Promise<T>>

4.5+

const type param

<const T>

5.0+

satisfies

value satisfies Type

4.9+

using

using x = new Resource()

5.2+

Last updated