首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于角2应用程序使用ES5 JavaScript和使用TypeScript应用程序的优缺点是什么?

对于角2应用程序使用ES5 JavaScript和使用TypeScript应用程序的优缺点是什么?
EN

Stack Overflow用户
提问于 2016-01-15 10:20:23
回答 2查看 1.8K关注 0票数 9

我和角1一起工作了很多年,现在我开始学习如何使用角2。

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

  • 使用TypeScript的利弊是什么?
  • 那些用来使用普通JavaScript的东西是什么?

奖金问题:

  • 在角2上下文中有选择JavaScript和TypeScript的最佳实践吗?

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

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

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

类型提示:

我喜欢类型暗示,但是我认为使用一种新的语言只是为了增加这个特性有点过分了,并且会为devs使用松散类型的库带来更多的工作(从docs,有一些方法可以做到这一点)。

基于类的样式税:

新的类语法(它接近ES6)呢?原型是JavaScript最被误解的特性,但我认为理解它的工作原理(了解您真正做的事情)比简单地把它放在一边更重要。

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

代码生成:

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

给出结论:

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-15 10:38:18

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

  • 代码暗示在IDE中还不成熟,因为ts仍然是新的,而且它还在变化。
  • 我同意他们应该专注于原型,这是JS的力量和方向,如果他们想要OOP,他们应该使用OOP语言,但我要说的是,对它的任何讨论都不会改变任何事情。
  • 我一直在使用TS进行这方面的工作,我可以告诉您,与js相比,这个东西更易读,需要更多的时间来设置,但是tbh只有一件事对您有意义,这就是为什么我采用TS的原因:

几乎没有关于角2的文档,甚至官方的API也没有完整的编写,你可以在这里找到一些片段,或者已经过时的alpha语法不再起作用,或者用TS编写。我甚至不得不通过src代码来理解,由于缺乏相关文档,我应该如何调用某个东西。所以如果你现在开始,我强烈建议你走那条路。为了让您了解您要进入的内容,检查Angular.io页面并查看开发人员指南,有4个节用JS编写,15个部分在TS中编写,很明显,它们会推动TS。

“在角2上下文中,是否存在在JavaScript和TypeScript之间选择的最佳实践?”

不,这是一个偏好的问题,你的项目有多大,你想要在你的代码中有多大的estructure,你多么容易发现缺陷而花费更多的时间开发等等。

票数 4
EN

Stack Overflow用户

发布于 2016-01-15 11:28:08

我认为类型记录的优点是转换到Javascript。当Javascript中有一个新特性时,传入板能够创建更好的Javascript,而我的类型记录不会改变。

我也喜欢打字本的类型检查本身。它已经将我从编码错误中拯救出来,仅仅因为类型不匹配,类型化数组也帮助我构造如下:

let members: array<People>

它迫使其他编码器提供正确的对象类型。

还可以说,本机Javascript是要走的路,因为它移除了传输过程,并且是本机的。

来自角速起动

类型标

代码语言:javascript
运行
复制
import {Component} from 'angular2/core';

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

Javascript

代码语言: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 = {}));

正如上面的例子所示,我更喜欢类型记录,因为我的代码看起来更干净,因此更容易理解。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34808866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档