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
Testing contract
Expected to pass- Scenario
- Type-check the file with `strict: true`, then delete one arm of the switch in `area()` and type-check again.
- Expected result
- The unmodified file compiles with no diagnostics and prints `unit: metric`, `circle: area = 12.57`, `rectangle: area = 12.00`. Removing an arm makes the `const _exhaustive: never = shape` assignment fail to compile - that line is the exhaustiveness check, and a checker that stays silent has not narrowed the discriminated union.
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.)
How to use this file for testing
“TypeScript — Shapes (union, generics, enum)” is a deterministic Novus Examples fixture for Syntax highlighting, Code parsing, Editor testing. Idiomatic hello-world programs and realistic snippets across sixteen languages, exercising comments, string escapes, interpolation, numeric literals, and language keywords — for testing syntax highlighters, editor themes, and tree-sitter grammars.
Documented properties for this file: TypeScript · UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
This is a short, known-correct source file. Run it through your syntax highlighter, linter, formatter, tree-sitter grammar, or parser, and open it in the in-browser editor to tweak and re-download. Each snippet exercises comments, string escapes, literals, and language keywords.
Code examples
npx tsx shapes.mts # or: deno run shapes.mtsRelated 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.

- mtsTypescript Lint Invalid — Any Cast InvalidIntentionally lint-bait SAMPLE typescript snippet (any-cast-invalid) for rule-engine tests.

- mtsTypeScript SatisfiesTypeScript satisfies operator sample (.mts) for TS tooling.

- 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.

- cC StructC struct SAMPLE for clangd / highlighter fixtures.

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