Typescript
  • Introducão
  • Primeiros Passos
    • Por que TypeScript
  • JavaScript
    • Igualdade
    • Referências
    • Null vs. Undefined
    • this
    • Closure
    • Number
    • Truthy
  • Futuro JavaScript Agora
    • Classes
      • Classes Emit
    • Arrow Functions
    • Rest Parameters
    • let
    • const
    • Destructuring
    • Spread Operator
    • for...of
    • Iterators
    • Template Strings
    • Promise
    • Generators
    • Async Await
  • Project
    • Compilation Context
      • tsconfig.json
      • Which Files?
    • Declaration Spaces
    • Modules
      • File Module Details
      • globals.d.ts
    • Namespaces
    • Dynamic Import Expressions
  • Node.js QuickStart
  • Browser QuickStart
  • TypeScript's Type System
    • JS Migration Guide
    • @types
    • Ambient Declarations
      • Declaration Files
      • Variables
    • Interfaces
    • Enums
    • lib.d.ts
    • Functions
    • Callable
    • Type Assertion
    • Freshness
    • Type Guard
    • Literal Types
    • Readonly
    • Generics
    • Type Inference
    • Type Compatibility
    • Never Type
    • Discriminated Unions
    • Index Signatures
    • Moving Types
    • Exception Handling
    • Mixins
  • JSX
    • React
    • Non React JSX
  • Options
    • noImplicitAny
    • strictNullChecks
  • Errors in TypeScript
    • Interpreting Errors
    • Common Errors
  • NPM
  • Testing
    • Jest
    • Cypress
  • Tools
    • Prettier
    • Husky
    • Changelog
  • TIPs
    • String Based Enums
    • Nominal Typing
    • Stateful Functions
    • Bind is Bad
    • Currying
    • Type Instantiation
    • Lazy Object Literal Initialization
    • Classes are Useful
    • Avoid Export Default
    • Limit Property Setters
    • outFile caution
    • JQuery tips
    • static constructors
    • singleton pattern
    • Function parameters
    • Build Toggles
    • Barrel
    • Create Arrays
    • Typesafe Event Emitter
  • StyleGuide
  • TypeScript Compiler Internals
    • Program
    • AST
      • TIP: Visit Children
      • TIP: SyntaxKind enum
      • Trivia
    • Scanner
    • Parser
      • Parser Functions
    • Binder
      • Binder Functions
      • Binder Declarations
      • Binder Container
      • Binder SymbolTable
      • Binder Error Reporting
    • Checker
      • Checker Diagnostics
      • Checker Error Reporting
    • Emitter
      • Emitter Functions
      • Emitter SourceMaps
    • Contributing
Powered by GitBook
On this page
  • Tornando o JavaScript melhor
  • Você ainda precisa aprender JavaScript

Was this helpful?

JavaScript

PreviousPor que TypeScriptNextIgualdade

Last updated 5 years ago

Was this helpful?

Havia (e continuará a ter) muitos competidores em alguns compiladores de sintaxe para o JavaScript. TypeScript é diferente deles isso por que o Seu JavaScript é o TypeScript. Aqui está um diagrama:

Seu JavaScript é o TypeScript

No entanto, isso significa que você só precisa conhecer JavaScript (a boa notícia é você apenas precisa aprender JavaScript). O TypeScript está apenas padronizando todas as maneiras que você fornece uma boa documentação em JavaScript.

  • Apenas dando-lhe uma nova sintaxe não ajuda a corrigir bugs (olhando para você CoffeeScript).

  • Criando uma nova linguagem abstrai você muito longe de seus tempos de execução, comunidades (olhando para você Dart).

O TypeScript é apenas um JavaScript documentado.

Tornando o JavaScript melhor

O TypeScript tentará protegê-lo de partes do JavaScript que nunca funcionaram (então você não precisa se lembrar disso):

[] + []; // JavaScript vai te dar "" (o que faz pouco sentido), TypeScript vai reportar um erro

//
// outras coisas que são sem sentido no JavaScript
// - não lhe dão um erro de execução (dificultando a depuração)
// - mas o TypeScript lhe dará um erro em tempo de compilação (tornando a depuração desnecessária)
//
{} + []; // JS : 0, TS Erro
[] + {}; // JS : "[object Object]", TS Erro
{} + {}; // JS : NaN ou [object Object][object Object] dependendo do navegador, TS Erro
"hello" - 1; // JS : NaN, TS Erro

function add(a,b) {
  return
    a + b; // JS : undefined, TS Erro 'código inacessível detectado'
}

Essencialmente TypeScript faz lint dos erros do JavaScript. Apenas fazendo um trabalho melhor do que outros linters que não possuem tipo de informações.

Você ainda precisa aprender JavaScript

Dito isso, o TypeScript é muito pragmático sobre o fato de que você escreve JavaScript, portanto, há algumas coisas sobre JavaScript que você ainda precisa saber para não ser pego de surpresa. Vamos discuti-los em seguida.

Nota: O TypeScript é um superconjunto do JavaScript. Apenas com documentação que pode realmente ser usada por compiladores / IDEs ;)