TypeScript — Shapes (union, generics, enum)
A realistic TypeScript snippet with an enum, a discriminated union, generics, exhaustive switch handling, and a typed reduce — for testing the type checker, highlighters, and the TS ESLint parser.
// Geometry in TypeScript: an enum, a discriminated union, generics,
// exhaustive switch handling, and a typed reduce.
export enum Unit {
Metric = "metric",
Imperial = "imperial",
}
export interface Circle {
kind: "circle";
radius: number;
}
export interface Rectangle {
kind: "rectangle";
width: number;
height: number;
}
export type Shape = Circle | Rectangle;
export function area(shape: Shape): number {
switch (shape.kind) {
case "circle":
return Math.PI * shape.radius ** 2;
case "rectangle":
return shape.width * shape.height;
default: {
const _exhaustive: never = shape;
return _exhaustive;
}
}
}
export function largest<T extends Shape>(shapes: readonly T[]): T | undefined {
return shapes.reduce<T | undefined>(
(best, s) => (best === undefined || area(s) > area(best) ? s : best),
undefined,
);
}
const shapes: Shape[] = [
{ kind: "circle", radius: 2 },
{ kind: "rectangle", width: 3, height: 4 },
];
console.log(`unit: ${Unit.Metric}`);
for (const s of shapes) {
console.log(`${s.kind}: area = ${area(s).toFixed(2)}`);
}Specifications
- Language
- TypeScript
- Kind
- realistic snippet
- Lines
- 50
- Encoding
- UTF-8
- Line Endings
- LF
What is a .mts file?
TypeScript (.mts) is a plain-text source file for TypeScript — a statically typed superset of JavaScript that compiles to plain JS. The .mts extension specifically marks an ES-module TypeScript file. It adds interfaces, generics, enums, and type annotations on top of JavaScript syntax.
How to use this file
Use an example .mts file to test TypeScript-aware highlighters, the tsc compiler and type checker, ESLint with the TS parser, and editor tooling. (We ship TypeScript as .mts to avoid the MPEG-TS .ts extension collision.)
Related files
- mtsTypeScript — Hello WorldThe classic hello-world in TypeScript (shipped as .mts to avoid the MPEG-TS .ts collision) — a typed function for testing TypeScript-aware highlighters and the tsc compiler.

- cC — Hello WorldThe classic hello-world in C — an include, main, and printf — for testing highlighters, C compilers, and parsers against the canonical first program.

- cC — Linked list (structs, malloc, pointers)A realistic C program: a singly linked list with a typedef struct, malloc/free memory management, pointer walking, and error handling — for testing highlighters, compilers, and static analysers.

- cppC++ — Hello WorldThe classic hello-world in C++ — iostream and std::cout — for testing highlighters, C++ compilers, and parsers.

- cppC++ — Series (class template, STL)A realistic C++ snippet with a class template, STL algorithms (max_element, accumulate), std::move, and range handling — for testing highlighters, g++/clang++, and parsers against real templates.

- cssCSS — Component styles (variables, flexbox, keyframes)A realistic component stylesheet using custom properties, flexbox, a fluid clamp() font size, color-mix(), a keyframe animation, and a media query — for testing CSS parsers, linters (stylelint), and highlighters.

Generated by generation/code_samples.py. Free for any use, no attribution required — license.