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:
- 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.
- No language-level conditional compilation. Multi-target builds
must move the conditional out of
tscand into the bundler (e.g. esbuilddefines+ dead code elimination), with the cost that conditionally-defined symbols must still exist at type-check time across every build. tscstill 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¶
- sources/2024-05-03-figma-typescript-migration — target language of Figma's Skew migration; three-semantic-differences list above is drawn from this source.
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.