What is TypeScript?
JavaScript and More
TypeScript adds additional syntax to JavaScript to support a tighter integration with your editor. Catch errors early in your editor.
A Result You Can Trust
TypeScript code converts to JavaScript, which runs anywhere JavaScript runs: In a browser, on Node.js or Deno and in your apps.
Safety at Scale
TypeScript understands JavaScript and uses type inference to give you great tooling without additional code.
Adopt TypeScript Gradually
Apply types to your JavaScript project incrementally, each step improves editor support and improves your codebase.
Let's take this incorrect JavaScript code, and see how TypeScript can catch mistakes in your editor.
functioncompact (arr ) {if (orr .length > 10)returnarr .trim (0, 10)returnarr }
No editor warnings in JavaScript files
This code crashes at runtime!
JavaScript file
// @ts-checkfunctioncompact (arr ) {if (Cannot find name 'orr'.Cannot find name 'orr'.. orr length > 10)returnarr .trim (0, 10)returnarr }
Adding this to a JS file shows errors in your editor
JavaScript with TS Check
// @ts-check/** @param {any[]} arr */functioncompact (arr ) {if (arr .length > 10)returnProperty 'trim' does not exist on type 'any[]'.Property 'trim' does not exist on type 'any[]'.arr .(0, 10) trim returnarr }
Using JSDoc to give type information
JavaScript with JSDoc
functioncompact (arr : string[]) {if (arr .length > 10)returnarr .slice (0, 10)returnarr }
TypeScript adds natural syntax for providing types
TypeScript file
Describe Your Data
Describe the shape of objects and functions in your code.
Making it possible to see documentation and issues in your editor.
interfaceAccount {id : numberdisplayName : stringversion : 1}functionwelcome (user :Account ) {console .log (user .id )}
typeResult = "pass" | "fail"functionverify (result :Result ) {if (result === "pass") {console .log ("Passed")} else {console .log ("Failed")}}
TypeScript becomes JavaScript via the delete
key.
typeResult = "pass" | "fail"functionverify (result :Result ) {if (result === "pass") {console .log ("Passed")} else {console .log ("Failed")}}
TypeScript file.
typeResult = "pass" | "fail"functionverify (result :Result ) {if (result === "pass") {console .log ("Passed")} else {console .log ("Failed")}}
Types are removed.
functionverify (result ) {if (result === "pass") {console .log ("Passed")} else {console .log ("Failed")}}
JavaScript file.