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

时间:2016-01-15 10:20:24

标签: javascript typescript angular

我与Angular 1合作多年了,我开始学习如何使用Angular 2。

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

  • 使用TypeScript的优点和缺点是什么?
  • 使用普通旧JavaScript有什么用?

奖金问题:

  • 在Angular 2上下文中选择JavaScript和TypeScript是否有最佳做法?

我不知道TypeScript,但是从我看过的几段代码中看来,主要功能似乎是:

  • 类型提示

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

浏览网页后的第一印象:

类型提示:

我喜欢类型提示,但我认为使用新语言添加此功能有点过分,并且会为开发人员提供更多工作来使用松散类型的库(来自文档,有一些方法可以做这一点)。

基于类的styntax:

新的类语法(接近ES6)怎么样?原型是JavaScript中最容易被误解的功能,但我认为了解它的工作原理(知道你真正做的事情)比简单地放在一边更为重要。

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

代码生成:

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

总结:

例如,我并不是真的相信学习TypeScript而不是坚持使用ES5 JavaScript。所以我希望社区提供反馈,以了解使用TypeScript的优势。

2 个答案:

答案 0 :(得分:6)

我认为Typescript的优点是对Javascript的转换。当Javascript中有新功能时,如果我的Typescript没有改变,则转换器能够创建更好的Javascript。

我也喜欢的Typescript是类型检查本身。它已经让我免于编码错误只是因为类型不匹配,类型数组也帮助我构造如下:

let members: array<People>

它强制其他编码人员提供正确的对象类型。

人们还可以认为原生Javascript是要走的路,因为它删除了转换过程并且是原生的。

来自Angular quickstart

<强>打字稿

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,因为我的代码看起来更干净,因此更容易理解。

答案 1 :(得分:4)

这个问题没有正确的答案。然而,过去一个月我被要求在Angular2上工作,我一直在做一些研究和开发。所以也许有些观点可以帮到你:

  • IDE中的代码提示仍然不成熟,因为ts仍然是新的,而且仍在不断变化。

  • 我同意他们应该专注于原型,这是JS的力量和方向,如果他们想要OOP他们应该使用OOP语言,但是我能说什么,没有对它的解释会改变任何东西。

  • 我一直在使用TS工作,我可以告诉你,与js相比,这个东西更具可读性,需要更多的设置,但是这里只有一件事这对你来说很重要,也是我为什么选择TS的方式:

Angular 2上几乎没有任何文档,甚至官方API还没有完整编写,你可以在这里找到一些片段,而且过时的alpha语法并不过时。不再工作或用TS写的。我甚至不得不通过src代码来理解我是如何因为缺少文档而调用某些东西。所以,如果你现在开始,我强烈建议你走那条路。只是让你知道你要进入的内容,查看Angular.io页面并查看开发人员指南,其中4个部分用JS编写,15个用TS编写,显然他们会推动TS。

&#34;在Angular 2上下文中选择JavaScript和TypeScript是否有最佳做法?&#34;

不,这是一个偏好问题,你的项目有多大,代码中需要多少结构,你想要以更多的时间开发来发现缺陷是多么容易,等等......