Skip to content
Omni Academy
Search courses and lessons
Search
Courses
Backend Development
9
Databases
1
Frontend Development
5
Data Science
5
All courses →
Playground
HTML & CSS
JavaScript
TypeScript
Python
PHP
Ruby
Light
Dark
Auto
Sign in
Get started
All
Backend Development
Databases
Frontend Development
Data Science
Playground
Blog
HTML
JS
TS
PY
PHP
RB
← Courses
📄
TypeScript basics
Run as I type
Reset
▶
Run
Ctrl
↵
TS
TypeScript source code
// This is fully type-checked, not just stripped. Break a type on // purpose and the error appears on the right before it runs. type Level = 'basic' | 'intermediate' | 'advanced' | 'expert'; interface Learner { name: string; score: number; level: Level; } const learners: Learner[] = [ { name: 'Aisha', score: 92, level: 'advanced' }, { name: 'Kenji', score: 78, level: 'intermediate' }, { name: 'Lena', score: 85, level: 'expert' }, ]; // The return type is inferred as Learner[] - hover-free, but real. function passing(people: Learner[], mark: number) { return people.filter((p) => p.score >= mark); } console.log(passing(learners, 80).map((l) => l.name)); // Try any of these and watch the type error appear: // const n: number = 'not a number'; // passing(learners, 'eighty'); // learners[0].level = 'beginner'; const byLevel: Record<Level, number> = { basic: 0, intermediate: 0, advanced: 0, expert: 0, }; for (const l of learners) byLevel[l.level] += 1; console.log(byLevel);
Output
Rendered by your browser