使用ES5 JavaScript开发Angular 2应用程序的优缺点和使用TypeScript的优缺点是什么?

9

我已经使用Angular 1多年了,现在开始学习如何使用Angular 2。

但在编写任何代码之前,我很难确定是否必须使用TypeScript还是JavaScript。

  • 使用TypeScript的利弊是什么?
  • 使用普通的JavaScript的利弊是什么?

奖励问题:

  • 在Angular 2上下文中选择JavaScript和TypeScript之间有最佳实践吗?

我不懂TypeScript,但从我看到的几行代码来看,似乎主要功能是:

  • 类型提示

  • 原型机制隐藏在常用的类语法下。

浏览网络后我的第一印象:

类型提示:

我喜欢类型提示,但我认为仅为了添加此功能而使用新语言有点过度,并且将为使用具有松散类型的库的开发人员产生更多工作(根据文档,有一些方法可以做到这一点)。

基于类的语法:

新类语法(接近ES6)怎么样?原型是JavaScript中最被误解的特性,但我认为更重要的是了解其工作原理(以了解您真正做什么),而不是简单地将其放在一边。

ES5是基于原型的编程语言,因此为什么要使用伪类编程语言,最终会产生原型?这对我来说似乎很奇怪。

代码生成:

最后一个问题是关于代码生成器。我已经在其他上下文中使用过代码生成器,我真的不喜欢它:在大多数情况下,人类将生成更好的编写代码(当我查看生成的js时:匿名函数无处不在!)并且更简洁(当涉及到在浏览器中加载生成的js文件时,大小很重要以减少加载时间)

总之:

例如,我并不真正相信学习TypeScript而不是坚持使用ES5 JavaScript的兴趣。因此,我想从社区中获得反馈,以了解使用TypeScript的优势。


1
请参考我应该使用TypeScript吗?还是只能使用ES6。Angular 2本身就是用TypeScript编写的,因此它最终将成为与Angular 2应用程序一起使用的标准。 - dsgriffin
1
你已经列出了所有的优缺点。选择Angular或React没有根本的技术原因,因为Angular只是一个JavaScript库,而一切都会编译成JavaScript,所以无论哪种方式都可以运行。未来社区和生态系统的发展我们无法预测。自己做决定吧。 - deceze
2个回答

6
我认为Typescript的优点在于它可以转译成Javascript。当Javascript有新功能时,转译器能够创建更好的Javascript,而我的Typescript不需要改变。
我也喜欢Typescript本身的类型检查。它已经帮助我避免了编码错误,因为类型不匹配,还有类型化数组帮助我进行结构化编程,例如: let members: array<People>
它强制其他程序员提供正确的对象类型。
也可以说,使用原生Javascript是一种选择,因为它消除了转译过程并且是本地的。
来自Angular快速入门的内容: Typescript
import {Component} from 'angular2/core';

@Component({
    selector: 'my-app',
    template: '<h1>My First Angular 2 App</h1>'
})
export class AppComponent { }

Javascript

function(app) {
  app.AppComponent =
    ng.core.Component({
      selector: 'my-app',
      template: '<h1>My First Angular 2 App</h1>'
    })
    .Class({
      constructor: function() {}
    });
})(window.app || (window.app = {}));

如上面的例子所示,我更喜欢使用Typescript,因为我的代码看起来更干净,因此更易于理解。

4
这个问题没有正确答案。但是,我过去一个月被要求使用Angular2并进行了一些研究和开发工作。所以也许以下几点可以帮助你:
- 由于ts仍然很新,并且仍在不断变化中,因此IDE中的代码提示仍不成熟。 - 如果他们想要OOP,他们应该使用OOP语言,而应该集中精力于JS的原型和方向,但是我同意,无论如何都不会改变任何事情。 - 我一直在使用TS进行开发,可以告诉你,与js相比,它更易读,需要更多的设置,但说实话,只有一件事对你很重要,那就是为什么我走上了TS之路:Angular2几乎没有文档,甚至官方API还没有完全编写,你会发现零碎的一点东西或者已经过时的alpha句法,不再起作用,或者是用TS编写的。我甚至不得不查看源代码来理解如何调用某些内容,因为缺乏相关文档。因此,如果您现在开始,我强烈建议您走这条路线。只需查看Angular.io页面并查看开发人员指南,其中有4个部分使用JS编写,15个部分使用TS编写,显然他们会推动TS。
“在Angular2环境中选择JavaScript和TypeScript之间是否有最佳实践?”
没有,这取决于个人喜好、项目规模、代码结构、发现缺陷的容易程度以及开发所需时间等因素。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接