Dovrei usare il dattiloscritto? o posso semplicemente usare ES6? [chiuso]


286

Il mio lavoro quotidiano è lo sviluppatore client che utilizza AngularJS. Stiamo valutando se vogliamo utilizzare TypeScript. Ho fatto qualche ricerca su dattiloscritto e quasi tutti i pacchetti JavaScript di cui ho bisogno devono avere file di tipo di definizione. Ho scoperto che non è molto conveniente, soprattutto se mi piacerebbe provare qualcosa di nuovo e non hanno la definizione per questo. È davvero frustrante. (Anche l'attuale definizione di jQuery mi dà alcuni problemi se voglio usare dattiloscritto 1.5 beta). Ho iniziato a guardare ES6 e sembra simile a TypeScript. Dovrei usare ES6 invece? Inoltre, ho sentito che angular 2 avrà il pieno supporto per TypeScript, sarà questo uno dei motivi per cui dovrei rimanere con esso?


11
Non hai bisogno di un file di definizione ogni volta per qualcosa di nuovo. Se si desidera utilizzare una libreria senza tipo, è possibile scrivere, declare var MyNewLibraryName: any;quindi utilizzarla come desiderato, senza lamentarsi del compilatore.
David Sherret,

2
Con i voti per chiudere questa domanda, suggerirei di chiedere più pro / contro associati a ciascun approccio piuttosto che chiedere quale sia il migliore, in questo modo stai chiedendo informazioni e non opinioni.
Brocco,

dattiloscritto aggiorna la nuova versione di javascript prima di tutti i principali browser, la mia opzione è quella di utilizzare dattiloscritto e compilare in versione javascript in base ai browser di destinazione. (ovviamente è anche facile trascrivere javascript da una versione all'altra)
bhv,

Se non ti preoccupi di essere in grado di sfilare correttamente il tuo codice e vuoi che Immutable.js sia davvero difficile da lavorare, e ti piace scrivere il bollettino, e pensi che DRY sia sopravvalutato e in realtà preferisci ripetere te stesso, e tu ti piace scrivere le definizioni dei tipi per il codice di altre persone e ti piace gestire i tipi mentre cambiano sotto di te e ti piace passare da due diversi editor di testo perché niente là fuori funziona correttamente, quindi scegli Typescript. Ma se sei sano di mente, scegli ES6 / 7 e Babele.
gigantesco

Risposte:


114

Sto usando Typescript nel mio attuale progetto angolare da circa un anno e mezzo e mentre ci sono alcuni problemi con le definizioni ogni tanto, allora il progetto DefinitelyTyped fa un lavoro straordinario nel tenere il passo con le ultime versioni delle librerie più popolari.

Detto questo, esiste una curva di apprendimento definita durante la transizione da JavaScript vanilla a TS e dovresti tenere conto della capacità di te e del tuo team di effettuare tale transizione. Inoltre, se utilizzerai la 1.x angolare, la maggior parte degli esempi che troverai online ti richiederà di tradurli da JS a TS e nel complesso non ci sono molte risorse sull'uso di TS e 1.x angolare in questo momento .

Se prevedi di utilizzare Angular 2, ci sono molti esempi che utilizzano TS e penso che il team continuerà a fornire la maggior parte della documentazione in TS, ma certamente non devi usare TS per usare Angular 2.

ES6 ha alcune funzioni interessanti e personalmente pianifico di conoscerlo meglio, ma a questo punto non lo considero un linguaggio pronto per la produzione. Principalmente a causa della mancanza di supporto da parte dei browser attuali. Naturalmente, puoi scrivere il tuo codice in ES6 e utilizzare un transpiler per portarlo su ES5, che sembra essere la cosa più popolare da fare in questo momento.

Nel complesso, penso che la risposta verrebbe su ciò che tu e il tuo team state imparando bene. Personalmente penso che sia TS che ES6 avranno un buon supporto e un futuro lungo, preferisco TS perché tendi ad avere funzionalità linguistiche più veloci e in questo momento il supporto degli strumenti (a mio avviso) è un po 'migliore.


40
ES6 non ha supporto per il browser ?? Sei un politico della SM? Sia dattiloscritto che ES6 necessitano di un transpiler. Significa che non stai eseguendo TS o ES6 sul web, ma piuttosto usando qualcosa come Babel. TS in Angular 2 è stato aggiunto solo per un legame politico tra Google e MS
STEEL il

40
@STEEL No, non sei un politico MS, stai solo rispondendo a una risposta che ho lasciato più di un anno fa, quando il supporto ES6 era molto limitato. E sei libero di pensare che la decisione di TS e Angular 2 sia stata politica, ma ciò non cambia il mio punto in cui è stato scritto per quella lingua e il team di Angular2 ne sta incoraggiando l'uso.
Kent Cooper,

18
Questo è di 2 anni fa, ma il tempo ha dimostrato come alla fine prevarrà lo standard. Oggigiorno ES6 è ampiamente supportato in modo nativo dalla maggior parte dei browser. Classi, funzioni delle frecce, ecc. Alla fine arriveremo a un punto in cui i browser supporteranno nativamente una versione abbastanza decente di javascript per rendere superflui i transpiler. Typescript richiederà sempre un transpiler. Perché questo è importante? perché è nostro dovere come sviluppatori web far avanzare il web, supportando gli standard
monzonj

3
È un errore ES6 non supporta la reale sicurezza del tipo "tempo di compilazione". Ci sono molte cose fantastiche in ES6 ma il fatto che non posso dire "questo argomento è una stringa (o istanza di classe X), dannazione" ed essere in grado di farlo verificare durante il processo di compilazione è ancora negativo per programmi di grandi dimensioni (front-end e back-end simili).
Brad Peabody,

È possibile utilizzare uno strumento come Flow Type per aggiungere il supporto del tipo a ES6 se lo si desidera. Fino a quando ES6 non diventerà onnipresente in tutti i browser, la tua toolchain sarà quindi composta da Flow-> ES6-> Babel, che è molto indiretto, ma fa il lavoro e penso che al momento sia una catena molto popolare.
Prahlad Yeri,

660

Albero decisionale tra ES5, ES6 e TypeScript

Ti dispiace fare un passo avanti?

  • Sì - Usa ES5
  • No, continua

Vuoi usare i tipi?

  • Sì: usa TypeScript
  • No: utilizzare ES6

Più dettagli

ES5 è il JavaScript che conosci e utilizzi oggi nel browser, è quello che è e non richiede un passaggio di generazione per trasformarlo in qualcosa che verrà eseguito nei browser di oggi

ES6 (chiamato anche ES2015 ) è la prossima iterazione di JavaScript, ma non funziona nei browser di oggi. Esistono alcuni transpiler che esporteranno ES5 per l'esecuzione nei browser. È ancora un linguaggio dinamico (leggi: non tipizzato).

TypeScript fornisce un sistema di battitura opzionale mentre si utilizzano le funzionalità delle versioni future di JavaScript (ES6 ed ES7).

Nota: molti dei transpilers là fuori (ad es. Babel, TypeScript) ti permetteranno di utilizzare le funzionalità delle future versioni di JavaScript oggi e di esportare il codice che verrà comunque eseguito nei browser di oggi.


5
Non è così semplice. Ci sono molti altri fattori.
RaoulRubin,

16
@RaoulRubin È vero, ci sono molti altri fattori, ma per una domanda chiusa qui almeno fornisce una base di partenza per il processo decisionale
Brocco

1
PS - ES6 + FlowType = Love :)
Red2678

3
@RavinderPayal ha una domanda interessante, Brocco. Dal punto di vista del mercato, qual è il valore di TS vs es5 o es6 e cose simili?
J. Wells,

3
Ok, quindi questo post ha un paio d'anni /. Facciamo un passo avanti fino ad oggi, 28 settembre 2017. La maggior parte dei browser supporta ES6?
Dewey Banks,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.