TypeScript em Aplicações Modernas

18
TypeScript em Aplicações Modernas

Transcript of TypeScript em Aplicações Modernas

Page 1: TypeScript em Aplicações Modernas

TypeScript em Aplicações Modernas

Page 2: TypeScript em Aplicações Modernas

Agenda Apresentação História do JavaScript Características do JavaScript ES6 Funcionalidades Como usar ES6 hoje? JS prós e contras História do TypeScript Características do Typescript Typescript Funcionalidades TypeScript prós e contras Demo

Page 3: TypeScript em Aplicações Modernas

@ntakashics

/ntakashii

Nicolas Takashi

[email protected]

ntakashi.net

Page 4: TypeScript em Aplicações Modernas

História do JavaScript Desenvolvido pela Brendan Eich em 1995 Nomes anteriores Mocha, LiveScript Suportado pelo Netscape em 1996 Microsoft criou JScript em 1996 Novembro de 1996 surgiu o ECMAScript Atualmente temos 6 versões do ECMAScript

Page 5: TypeScript em Aplicações Modernas

Características do JavaScript Paradigma Imperativo e Estruturado

Suporte a sintaxe de programação estruturada da linguagem C Dinâmica

Tipagem dinâmica Baseados em objetos Avaliação em tempo de execução

Page 6: TypeScript em Aplicações Modernas

Características do JavaScript Funcional

Funções de primeira classe Funções aninhadas

Baseada em protótipos Protótipos: JS usa protótipos ao invés de classes para herança Funções e métodos: Não existe distinção entre funções e métodos no

JavaScript

Page 7: TypeScript em Aplicações Modernas

ES6 FuncionalidadesConstants ScopingArrow Functions Extend Parameter HandlingTemplate Literals Enhanced Regular ExpressionEnhanced Object Properties Destructuring Assignment Modules ClassesSymbol Type IteratorsGenerators Map/Set & WeakMap/WeakSetTyped Arrays PromisesMeta Programing Internationalization & Localization

Page 8: TypeScript em Aplicações Modernas

Como usar ES6 hoje? Shim

Se desejamos usar apenas apenas novos objetos do ES6 tais como Promises, novas funções de string ou math, podemos utilizar Shim.

Basta adicionar o script ES6-Shim antes de seus scripts Transpilers

Quando desejamos usar novas keywords, funções e objetos precisamos seguir o caminho dos transpilers: Traceur Babel ShiftJS TypeScript

Page 9: TypeScript em Aplicações Modernas

JS prós e contras Prós

Está presente em todos os lugares Existe um numero incontável de bibliotecas Flexível Comunidade ativa e forte Muito conteúdo de aprendizagem

Page 10: TypeScript em Aplicações Modernas

JS prós e contras Contras

Checagem em tempo de execução Alto custo de manutenabilidade Escopos só podem ser criados por funções Conversão implícita Prototypes – (Apenas confuso)

Page 11: TypeScript em Aplicações Modernas

História do TypeScript Criada por Anders Hejlsber – Criador do C#, Delphi e Turbo Pascal Primeira vez visto em outubro de 2012 2 anos depois foi elogiada pelo Miguel de Icaza A partir de 2013 teve suporte em outras IDE’s e editores de texto

Eclipse Emacs VIM Sublime

Page 12: TypeScript em Aplicações Modernas

História do TypeScript 2013 teve a versão 0.9 com suporte a genéricos 2014 sai a versão 1.0 junto com Visual Studio 2013 Update 2 Utilizado em aplicações de larga escala

Page 13: TypeScript em Aplicações Modernas

Características do TypeScript Paradigmas

OOP Estruturado Imperativo Funcional

Open source

Page 14: TypeScript em Aplicações Modernas

TypeScript FuncionalidadesType annotations Compile time type checkingType inference Type erasureInterfaces Enumeraded TypeMixin GenericNamespaces TupleAsync / Await ClassesModule Arrow functionOptional Parameters Default Parameters

Page 15: TypeScript em Aplicações Modernas

TypeScript prós e contras Prós

Checagem de tipo Auxilio da IDE para refatoração Baixo custo de manutenção Fácil aprendizado para profissionais de linguagens estáticas

Page 16: TypeScript em Aplicações Modernas

TypeScript prós e contras Contras

Adição de mais um processo no desenvolvimento Risco do desenvolvedor não estudar JavaScript Typings

Page 17: TypeScript em Aplicações Modernas

Dúvidas?

Page 18: TypeScript em Aplicações Modernas

ObrigadoTwitter: @ntakashicsE-mail: [email protected]: ntakashi.net