Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
// Recursive JSON type type JSONPrimitive = string | number | boolean | null; type JSONObject = { [key: string]: JSONValue }; type JSONArray = JSONValue[]; type JSONValue = JSONPrimitive | JSONObject | JSONArray; const data: JSONValue = { name: "Alice", scores: [98, 87, 76], address: { city: "London", zip: "EC1A 1BB" }, active: true, }; // Recursive tree structure type TreeNode<T> = { value: T; children: TreeNode<T>[]; }; function sumTree(node: TreeNode<number>): number { return node.value + node.children.reduce( (acc, child) => acc + sumTree(child), 0 ); } const tree: TreeNode<number> = { value: 1, children: [ { value: 2, children: [{ value: 4, children: [] }] }, { value: 3, children: [] }, ], }; console.log(sumTree(tree)); // 10 // Recursive readonly deep type type DeepReadonly<T> = T extends (infer U)[] ? readonly DeepReadonly<U>[] : T extends object ? { readonly [K in keyof T]: DeepReadonly<T[K]> } : T; type Config = { server: { host: string; port: number }; debug: boolean }; type FrozenConfig = DeepReadonly<Config>;
Result
Open