Run ❯
Get your
own Node
server
❯
Run Code
Ctrl+Alt+R
Change Orientation
Ctrl+Alt+O
Change Theme
Ctrl+Alt+D
Go to Spaces
Ctrl+Alt+P
// Linked list type Linked
= { value: T; next: Linked
| null }; const list: Linked
= { value: 1, next: { value: 2, next: { value: 3, next: null } } }; function listValues
(l: Linked
| null): T[] { const out: T[] = []; while (l) { out.push(l.value); l = l.next; } return out; } console.log(listValues(list).join(" -> ")); // Directory tree type File = { type: "file"; name: string; size: number }; type Directory = { type: "directory"; name: string; children: (File | Directory)[] }; const fs: Directory = { type: "directory", name: "root", children: [{ type: "file", name: "a.txt", size: 10 }, { type: "directory", name: "sub", children: [] }], }; function countFiles(node: File | Directory): number { if (node.type === "file") return 1; return node.children.reduce((n, child) => n + countFiles(child), 0); } console.log(countFiles(fs)); // Recursive function type (runtime) type RecursiveFunction
= (x: T | RecursiveFunction
) => void; const f: RecursiveFunction
= (x) => { if (typeof x === "number") console.log(x); }; f(42);
1 -> 2 -> 3 1 42