Skip to content

SYSTEM Cited by 2 sources

TypeScript

Microsoft's typed superset of JavaScript (2012→), industry-standard compile-to-JS language for the web. Large tooling ecosystem (linters, bundlers, static analyzers, IDE integration), native package management via npm, async/await + modern JS features, flexible structural type system.

Relevant to the wiki for two reasons: it's the target of Figma's compile-to-JS migration off Skew (patterns/gradual-transpiler-migration), and it has three semantic details that load-bearingly differ from other compile-to-JS languages and matter during migration:

  1. Initialization order is significant at module scope. A namespace or class is only initialized after its defining import runs; referencing a static class member before its class declaration at module top level is a compile-time error. Languages that make every symbol available at load time (like Skew) migrate into this requirement.
  2. No language-level conditional compilation. Multi-target builds must move the conditional out of tsc and into the bundler (e.g. esbuild defines + dead code elimination), with the cost that conditionally-defined symbols must still exist at type-check time across every build.
  3. tsc still emits valid JS even with type errors — a useful property during migration (lets teams ship generated TS whose type story is still being cleaned up).

Seen in

In Figma's game-engine-shaped client stack

Beyond being the target of Figma's Skew-to-TS transpiler migration, TypeScript is also the UI-layer language in Figma's three-language client+server stack (Source: sources/2026-04-21-figma-how-figma-draws-inspiration-from-the-gaming-world). The canvas is C++ → WebAssembly, the server tier is Rust, and the UI shell around the canvas is React + TypeScript. The split is chosen by workload fit — TS's static-type + tooling ergonomics matter for UI engineering in a way raw performance doesn't. See patterns/game-engine-stack-for-web-canvas for the full three-language pattern and systems/react for the UI-framework pairing.

Last updated · 200 distilled / 1,178 read