Devo usar o texto datilografado? ou eu posso apenas usar ES6? [fechadas]

286

Meu trabalho diário é desenvolvedor de clientes usando o AngularJS. Estamos avaliando se queremos usar o TypeScript. Fiz algumas pesquisas sobre texto datilografado e quase todos os pacotes JavaScript necessários devem ter arquivos de tipo de definição. Achei que isso não é muito conveniente, especialmente se eu gostaria de tentar algo novo e eles não têm a definição para isso. É realmente frustrante. (Até a definição atual do jQuery me dá alguns problemas se eu quiser usar o datilógrafo 1.5 beta). Comecei a olhar para o ES6 e ele se parece com o TypeScript. Devo apenas usar o ES6? Além disso, ouvi dizer que o angular 2 terá suporte total ao TypeScript, será esse o motivo pelo qual devo permanecer com ele?

cjskywalker
fonte
11
Você não precisa de um arquivo de definição sempre para algo novo. Se você quiser usar uma biblioteca sem tipo, pode escrever declare var MyNewLibraryName: any;e usá-la como desejar, sem o reclamante do compilador.
David Sherret
2
Com os votos para encerrar esta pergunta, sugiro perguntar mais dos prós / contras associados a cada abordagem, em vez de perguntar qual é o melhor, dessa forma, você está pedindo informações e não opiniões.
Brocco
O Typecript atualiza o recurso de nova versão javascript antes de todos os principais navegadores, minha opção é usar o texto datilografado e compilar a versão javascript com base nos navegadores de destino. (É claro que, mesmo que seja fácil de javascript transpile uma versão para outra)
bhv
Se você não está preocupado em ser capaz de lintar seu código corretamente, e deseja que o Immutable.js seja realmente difícil de trabalhar, e você gosta de escrever clichês, acha que DRY é superestimado e prefere se repetir. gosta de escrever definições de tipo para o código de outras pessoas e gosta de gerenciar tipos à medida que mudam embaixo de você, e gosta de alternar entre dois editores de texto diferentes, porque nada lá fora funciona corretamente e, em seguida, escolha Tipo de letra. Mas se você é sensato, escolha ES6 / 7 e Babel.
gargantuan

Respostas:

114

Uso o Typescript no meu projeto angular atual há cerca de um ano e meio e, embora haja alguns problemas com definições de vez em quando, o projeto DefinitelyTyped faz um trabalho incrível em acompanhar as versões mais recentes das bibliotecas mais populares.

Dito isto, há uma curva de aprendizado definida ao fazer a transição do JavaScript vanilla para o TS e você deve levar em consideração a capacidade de você e sua equipe para fazer essa transição. Além disso, se você estiver usando o angular 1.x, a maioria dos exemplos que você encontrará online exigirá que você os traduza de JS para TS e, em geral, não há muitos recursos para usar o TS e o angular 1.x juntos agora .

Se você planeja usar o angular 2, existem muitos exemplos usando o TS e acho que a equipe continuará fornecendo a maior parte da documentação no TS, mas você certamente não precisará usar o TS para usar o angular 2.

O ES6 possui alguns recursos interessantes e, pessoalmente, pretendo me familiarizar com ele, mas não considero uma linguagem pronta para produção neste momento. Principalmente devido à falta de suporte dos navegadores atuais. Obviamente, você pode escrever seu código no ES6 e usar um transpiler para acessá-lo no ES5, o que parece ser a coisa mais popular a se fazer no momento.

No geral, acho que a resposta se resumiria ao que você e sua equipe aprendem à vontade. Pessoalmente, acho que o TS e o ES6 terão bom suporte e futuros longos, mas prefiro o TS porque você tende a obter recursos de linguagem mais rapidamente e agora o suporte a ferramentas (na minha opinião) é um pouco melhor.

Kent Cooper
fonte
40
ES6 não tem suporte para navegador? Você é algum político de MS? Tanto o texto datilografado quanto o ES6 precisam de um transpiler. Significa que você não está executando o TS ou ES6 na Web, e sim usando algo como o Babel. O TS no Angular 2 foi adicionado apenas por um vínculo político entre Google e MS
STEEL
40
@STEEL Não, não é um político de MS, você está apenas respondendo a uma resposta que deixei há mais de um ano, quando o suporte ao ES6 era muito limitado. E você é livre para pensar que a decisão do TS e do Angular 2 foi política, mas isso não muda o meu ponto de vista de que foi escrito para esse idioma e a equipe do Angular2 está incentivando seu uso.
Kent Cooper
18
Isso é de 2 anos atrás, mas o tempo mostrou como o padrão finalmente prevalece. Atualmente, o ES6 é amplamente suportado nativamente pela maioria dos navegadores. Classes, funções de seta, etc. Eventualmente, chegaremos a um ponto em que os navegadores suportarão nativamente uma versão decente do javascript o suficiente para tornar desnecessários os transpilers. O texto datilografado sempre exigirá um transpiler. Por que isso é importante? porque é nosso dever, como desenvolvedores da web, impulsionar a web para a frente, e isso é apoiando os padrões
monzonj
3
É uma chatice que o ES6 não suporta segurança real do tipo "tempo de compilação". Há muitas coisas excelentes no ES6, mas o fato de eu não poder dizer "esse argumento é uma sequência de caracteres (ou instância da classe X), droga" e poder verificar isso como parte do processo de compilação ainda é ruim para programas grandes (front-end e back-end).
Brad Peabody
Você pode usar uma ferramenta como o Tipo de fluxo para adicionar suporte ao ES6, se você realmente quiser. Até que o ES6 se torne onipresente em todos os navegadores, sua cadeia de ferramentas consistirá em Flow-> ES6-> Babel, que é muito indireto, mas faz o trabalho e eu acho que é uma cadeia muito popular atualmente.
Prahlad Yeri
660

Árvore de decisão entre ES5, ES6 e TypeScript

Você se importa de ter uma etapa de construção?

  • Sim - use ES5
  • Não - continue

Deseja usar tipos?

  • Sim - use TypeScript
  • Não - use ES6

Mais detalhes

ES5 é o JavaScript que você conhece e usa no navegador hoje. É o que é e não requer uma etapa de construção para transformá-lo em algo que será executado nos navegadores atuais.

ES6 (também chamado ES2015 ) é a próxima iteração do JavaScript, mas não é executado nos navegadores de hoje. Existem muitos transpilers que exportam o ES5 para execução em navegadores. Ainda é uma linguagem dinâmica (leia-se: não digitada).

TypeScript fornece um sistema de digitação opcional enquanto recursos de versões futuras do JavaScript (ES6 e ES7).

Nota: muitos dos transpilers disponíveis no mercado (isto é, babel, TypeScript) permitirão o uso de recursos de versões futuras do JavaScript hoje e a exportação de código que ainda será executado nos navegadores atuais.

Brocco
fonte
5
Não é tão simples assim. Existem muitos outros fatores.
RaoulRubin
16
@RaoulRubin Isso é verdade, existem muitos outros fatores, mas para uma pergunta encerrada aqui, pelo menos, fornece um ponto de partida para o processo de tomada de decisão
Brocco
1
PS - ES6 + FlowType = Love :)
Red2678
3
@RavinderPayal tem uma pergunta interessante, Brocco. De uma perspectiva de mercado, qual é o valor de TS vs es5 ou es6 e outras coisas nesse sentido?
J.Wells
3
Ok, então este post tem alguns anos. Vamos avançar para hoje, 28 de setembro de 2017. A maioria dos navegadores oferece suporte ao ES6?
Dewey Banks