将 ES5 JavaScript 用于 Angular 2 应用程序和使用 TypeScript 的优缺点是啥? [关闭]

Posted

技术标签:

【中文标题】将 ES5 JavaScript 用于 Angular 2 应用程序和使用 TypeScript 的优缺点是啥? [关闭]【英文标题】:What are the pros and cons using ES5 JavaScript for Angular 2 applications and those for using TypeScript? [closed]将 ES5 JavaScript 用于 Angular 2 应用程序和使用 TypeScript 的优缺点是什么? [关闭] 【发布时间】:2016-04-20 22:00:24 【问题描述】:

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

但在编写任何代码行之前,我都在纠结是否必须使用 TypeScript 或 javascript

使用 TypeScript 的优缺点是什么? 哪些是使用普通旧 JavaScript 的?

奖金问题:

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

我不知道 TypeScript,但从我看到的几段代码看来,主要特点是:

类型提示

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

浏览网页后的第一印象:

类型提示:

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

基于类的语法:

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

ES5 是一种基于原型的编程语言,那么为什么要使用基于伪类的编程语言,它最终会产生原型呢?我觉得很奇怪。

代码生成:

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

总结:

例如,我不太相信有兴趣学习 TypeScript 而不是坚持使用 ES5 JavaScript。所以我想从社区那里得到反馈,以了解使用 TypeScript 的优势。

【问题讨论】:

见Should I use typescript? or I can just use ES6。 Angular 2 本身是用 Typescript 编写的,因此它最终将成为 Angular 2 应用程序使用的标准。 您几乎已经列出了所有的优缺点。选择其中一个没有根本的技术原因,Angular 只是一个 Javascript 库,无论如何,一切都被编译成 Javascript,所以它会以一种或另一种方式工作。未来社区和生态系统将如何发展,我们无法告诉你。任君挑选。 【参考方案1】:

我认为 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,因为我的代码看起来更简洁,因此更易于理解。

【讨论】:

【参考方案2】:

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

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

我同意他们应该专注于原型,这是 JS 的优势和方向,如果他们想要 OOP,他们应该改用 OOP 语言,但我能说什么,没有讨论会改变任何事情。

我一直在使用 TS 开发它,我可以告诉你,与 js 相比,它更具可读性,需要更多的设置时间,但是只有一件事对你来说很重要,而且这就是我选择 TS 方式的原因:

几乎没有关于 Angular 2 的文档,甚至还没有完全编写官方 API,你可以在这里找到一些片段,要么是过时的 alpha 语法不再起作用,要么是写在TS。我什至不得不通过 src 代码来了解我应该如何调用某些东西,因为它缺乏文档。所以如果你现在开始,我强烈建议你走那条路。只是为了让你知道你正在进入什么,检查 Angular.io 页面并查看开发指南,其中有 4 个部分用 JS 编写,15 个部分用 TS 编写,很明显他们会推动 TS。

“在 Angular 2 上下文中选择 JavaScript 和 TypeScript 是否有最佳实践?”

不,这是一个偏好问题,您的项目有多大,您希望代码中有多少结构,您希望以更多时间为代价发现缺陷有多容易等等......

【讨论】:

以上是关于将 ES5 JavaScript 用于 Angular 2 应用程序和使用 TypeScript 的优缺点是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

[JavaScript]ES5基础知识总结

什么是es5 javascript

从零开始学习前端JAVASCRIPT — 5JavaScript基础ES5

WKWebView 不适用于 JavaScript 类

JavaScript ES5类 原型 原型链 组合原型寄生式继承

ES6以及gulp如何将ES6转为ES5