【问题标题】:Migration to angular 2 - ES6 or TypeScript? [closed]迁移到 Angular 2 - ES6 还是 TypeScript? [关闭]
【发布时间】:2017-02-26 15:01:21
【问题描述】:

我的公司正在考虑从 angular 1.5.x 升级到 angular 2。代码库是用 ES5 编写的,因此迁移到 ES6 或 TypeScript 也在讨论中。

TypeScript 在基本 JavaScript 的基础上添加了一些 OOP 功能,并且由于当前代码更多地是一种函数式编程方法,而不是使用 OOP 样式(类等),我想知道从 JS 迁移到 TS 时还有什么其他好处角2?

angular 2 中有多少 OOP?

【问题讨论】:

  • 您的问题就像问要使用哪个 IDE。 ES6 或 TS 是您的团队需要做出的选择。事实上,TS 是 ES5 的超集,具有 ES6 的特性。所以你可以在 ES6 中做的所有事情,你可能也可以在 TS 中做——但反过来就不行了。关于 OOP:组件、指令和服务现在都是类。
  • angular2 的事实上的标准语言是 TypeScript。该框架是用 TS 编写的,文档默认是用 TypeScript 编写的,而且代码在 TS 中更易于维护和编写。只需使用 TypeScript,真的很容易。
  • 不清楚你是打算使用原生 ES6 还是用 Babel 转译。在最后一种情况下,您不仅限于 ES6,还可以使用 ES.next 功能集(这与 TS 中的 OOP 方式或多或少相同)。 A2 依赖注入在设计时考虑了 TS,它允许在大多数情况下跳过 @Inject 装饰器和 this.injectedService = injectedService,这是 TS 在 A2 开发环境中的主要好处。对于 ES5/ES6 与 ES.next,see this answer.

标签: oop angular typescript functional-programming ecmascript-6


【解决方案1】:

Typescript 与 OOP 无关。 OOP 与类型正交(想想 Java 与 Smalltalk)。 Typescript 是关于静态类型验证的:您是否使用了您认为使用数组的字符串?实际上,就在上周五,我实际上修复了同事代码中的一个错误,他在他认为是数组的长度上使用了for 循环(Array.prototype.forEach 使得它很容易找到错误) .

静态类型检查是否值得在整个代码库中添加类型注释?这是一个判断电话。

另一方面,ES6/ESNext 为您提供了更好的代码编写方式。我不明白怎么会有人提出这样的论点

function(arr) {
  var foo = arr[0];
  var bar = arr[1];
  return foo + bar;
}

优于

([foo, bar]) => foo + bar

对于许多其他功能也是如此,如果您以函数式风格编写您的代码库(如我的)可能会乱七八糟

Object.keys(someObj)
  .map(k => someObj[k])
  .filter...

现在你只有Object.values。加上大约一百万个其他功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 2017-04-20
    • 2016-11-04
    • 2020-11-13
    相关资源
    最近更新 更多