Skip to content

SuperJS vs TypeScript — one pager

For press / launch. Full comparison: docs/comparisons/sjs-vs-typescript.md.

One sentence

SuperJS is JavaScript with a sound type system — it removes TypeScript's unsound escape hatches instead of adding more configuration.

When to choose SuperJS

  • You want provable null safety without strictNullChecks footguns
  • You're tired of any silently infecting call chains
  • You want sum types + exhaustive match without discriminated-union ceremony
  • You need a smaller language that's easier to teach and review

When to stay on TypeScript

  • You depend heavily on mapped/conditional types and library inference
  • Your team needs the full npm @types/* ecosystem without wrappers
  • You require a mature IDE/debugger story today (SJS DAP is post-1.0)

Feature contrast

TypeScriptSuperJS
anyAllowed; propagates silentlyBanned — use dynamic (explicit, lintable)
NullabilityOpt-in strictNon-null by default; T? for nullable
UnionsDiscriminated unions (manual)Sum types + exhaustive match
IntersectionsA & BBanned — structural type X extends A, B
Conditional typesCore featureBanned — use sum types
JSXConfig requiredOn by default
OutputErased typesClean ES2022 JS today

Benchmark snapshot

Synthetic ~14k LOC corpus (macOS arm64, Node 24):

ToolCold wall time
SuperJS compile81 ms
tsc --noEmit721 ms
esbuild transpile431 ms

See docs/perf/.

Try it

npm install -g @superjsorg/cli
superjs init
superjs build

Playground: https://superjs.org/playground

Documentation