O documento apresenta uma palestra sobre TypeScript. Resume-se em 3 frases:
1) TypeScript é um superconjunto de JavaScript que adiciona tipagem estática e outras funcionalidades, como classes e módulos, compilando para código JavaScript executável.
2) A palestra discute os principais recursos de tipagem e modularização do TypeScript, comparando-o com CoffeeScript, e demonstra como debugar código TypeScript diretamente na linguagem.
3) Também apresenta como usar TypeScript em diversos ambientes como Node.js, Visual Studio,
4. Uma empresa democrática
• Sem gerentes ou estrutura hierárquica
• Livros abertos
• Decisões por consenso
• 100% ágil
http://bit.ly/lambda3democracia
5. Agenda
Desafios do desenvolvimento
Algumas bizarrices do JavaScript O TypeScript
com JavaScript
Demos Desenvolvimento pra Windows
Comparação com CoffeeScript
(features, linux, windows, etc) 8 com TypeScript
Q&A
9. Herança com prototypes
var Animal = function () { };
Animal.prototype.respira = function () {
return "Respirando.... Respirando....";
};
var Cachorro = function () { };
Cachorro.prototype = new Animal();
Cachorro.prototype.late = function () {
return 'Au Au!';
};
var cachorro = new Cachorro();
var animal = new Animal();
console.log(cachorro.respira());
console.log(cachorro.late());
console.log(animal.respira());
11. Modularização do JavaScript
• Diversos atributos adicionados ao escopo global (no
browser, window)
• Conflitos de nomes
• Sem modularização com suporte na linguagem, é
preciso programar a modularização na mão
• Difícil definir explicitamente as dependências de cada
módulo
18. Tipagem estática opcional
var soma = function(x:number, y:number){
return x + y;
}
soma(1,2) //3 //ok!
soma(1,"2") //não compila
19. Sintaxe de função mais limpa
var mult = function(a,b){
return a*b;
}
//a mesma função:
var mult = (a,b) => a*b;
20. Tipagem nas funções
var somaLados = (poligono: { x: number; y: number; }) {
return poligono.x + poligono.y;
}
var total = somaLados( { x: 2, y: 3 });
somaLados( 3 ); //não compila
21. Inferência de tipo
var numero = 1; //isso é um número
function escreva(texto:string){}
escreva(numero); //não compila
//o mesmo que:
var numero:number = 1
22. Inferência de tipo
var numero = 1; //isso é um número
function escreva(texto:string){}
Com TypeScript os erros de
tipagem podem ser pegos
escreva(numero); //não compila
em tempo de compilação
//o mesmo que:
var numero:number = 1
23. Classes!
class Animal {
respira(): string {
return "Respirando.... Respirando....";
};
}
class Cachorro extends Animal {
latir(): string {
return "Au Au!!";
}
}
var cachorro = new Cachorro();
var animal = new Animal();
console.log(animal.respira());
console.log(cachorro.latir());
24. Construtores
class Animal {
constructor(public nome: string) { };
respira(): string {
return this.nome + " Respirando.... Respirando....";
};
}
class Cachorro extends Animal {
late(): string {
return this.nome + " Au Au!!";
}
}
var cachorro = new Cachorro("Link");
var animal = new Animal("Arroba");
25. Interface de função
interface binario {
(x: number, y: number): number;
}
var soma:binario = (x, y) => x + y;
soma(4, "5"); //não compila
29. Propriedades em classes
class Pessoa {
private _nome: string;
get nome(): string {
return this._nome;
}
set nome(value: string) {
this._nome = value;
}
}
var p = new Pessoa();
p.nome = "Giovanni";
console.log(p.nome);
43. Possivel debugar direto no TypeScript
• Usando um de-para de TypeScript para JavaScript
• O padrão atual é baseado nos source maps propostos
pela Mozilla (http://bit.ly/sourcemapsr3)
• É possível colocar breakpoints, ver valor de
variáveis, step into, etc
• Já disponível no Google Chrome e Visual Studio
48. TypeScript x CoffeeScript
TypeScript CoffeeScript
Tipagem estática opcional Tipagem dinâmica
Superset do JavaScript (antencipando Nova linguagem
novidades do EcmaScript 6)
Em geral, mais agradável para Em geral, mais agradável para
programadores Java, C#, C++ programadores Ruby, Python, Groovy
Mais fácil escrever ferramental pelas Mais difícil escrever ferramental pelas
características estáticas da linguagem características dinâmicas da linguagem
Auto-complete, refactoring, debugging, find
references, etc
Source mapping e debugging possibilitado Source mapping em versão futura, atrasado
direto na linguagem com relação ao planejamento
Leitura é igual ao JavaScript, com pequenas Mais fácil de ler (postfix, novas palavras-
melhorias chave, etc, autoreturn, menos cerimônia)
50. Mais informações
• http://www.typescriptlang.org/
• Cursos da Pluralsight: http://bit.ly/cursots
• Blog do TypeScript: http://blogs.msdn.com/b/typescript/
• Tag de TypeScript no blog da Lambda3: http://bit.ly/lambda3ts
• TouchDevelop (app Windows8): http://bit.ly/touchdevelopvideo
• Anders Hejlsberg apresentando: http://bit.ly/andersts
• Hanselman com Anders: http://bit.ly/hanselts
• Type Definitions para TypeScript: http://bit.ly/definitelytyped
51. Obrigado!
Giovanni Bassi Victor Cavalcante
giovanni@lambda3.com.br vcavalcante@lambda3.com.br
@giovannibassi @vcavalcante
Roteiro:Mostrar as bizarrices do JavaScript Demonstrar as coisas ruins do JavaScript parecido com o vídeo: http://www.youtube.com/watch?v=kXEgk1Hdze0Desafios do desenvolvimento com JavaScript OO com prototypesAuto-complete limitado Modularização é difícilApresentar o TypeScript A linguagem Classes Módulos Interfaces Classes e Interface abertas Tipagem opcionalApresentar o fato de ser Open Source (código no codeplex) http://typescript.codeplex.com/Roda em NodeJSTypeScript é escrito em TypeScriptDemos: Continuar mostrando features da linguagem Demo no site com o Playgroundhttp://www.typescriptlang.org/Playground/Demo mostrando com NodeJS no Linux Instalando Baixando com GitRodando a partir do código fonte Desenvolvendo no VimDemo mostrando TypeScript no Visual Studio RefactoringApoio do ferramental Exibição lado a lado com JS geradoDesenvolvimento pra Windows 8 com TypeScript Comparação com CoffeeScriptDescrição: JavaScript é a linguagem da web, e disso não há dúvida. Mas a linguagem tem evoluído com timidez, e quem trabalha no dia a dia com ela sente necessidade de uma linguagem que suporte melhor o desenvolvimento. Coisas simples, como uma ferramenta que suporte uma boa refatoração, modularização, e suporte a orientação a objetos com classes fazem muita falta. Além disso, algumas construções do JavaScript poderiam ser mais fáceis de entender. O TypeScript é uma linguagem baseada em JavaScript (na verdade, um superconjunto seu), que compila para JavaScript, e que pode ser usada em qualquer plataforma (servidor e cliente) e com qualquer navegador. Fácil de usar, extremamente familiar aos desenvolvedores de JavaScript, de instalação rápida e simples no Linux, Mac ou Windows, e com um excelente ferramental a disposição, a linguagem chega para pavimentar o caminho até a próxima versão do JavaScript e para brilhar por conta própria. Nessa palestra veremos como usar e instalar, quais as vantagens e oportunidades e os melhores cenários para seu uso.
Victor Cavalcante[]+[]// ’’[]+{}// ‘[object Object]’{}+[]// 0{}+{}// NaN“\\f\\n\\r” == 0
Você pode copiar JavaScript e colocar em um arquivo .TS.
Você pode copiar JavaScript e colocar em um arquivo .TS.
Com JavaScript, só em tempo de execução, não há opção.