【问题标题】:What do var-less variables mean within TypeScript classes?TypeScript 类中无 var 的变量是什么意思?
【发布时间】:2016-07-07 02:09:53
【问题描述】:

在 Angular2 中创建组件类时。为什么我们不需要var?声明新变量时?例如:

@Component({
  selector: 'my-app',
  template: `
    <h1>{{title}}</h1>
    `
})
export class AppComponent {
  title = 'My title';
}

怎么不是var title = 'My title';呢?

编辑:当我阅读this 时,我的原始问题出现了,原始代码如下所示:

import { Component } from '@angular/core';
export class Hero {
  id: number;
  name: string;
}
@Component({
  selector: 'my-app',
  template: `
    <h1>{{title}}</h1>
    <h2>{{hero.name}} details!</h2>
    <div><label>id: </label>{{hero.id}}</div>
    <div>
      <label>name: </label>
      <input [(ngModel)]="hero.name" placeholder="name">
    </div>
    `
})
export class AppComponent {
  title = 'Tour of Heroes';
  hero: Hero = {
    id: 1,
    name: 'Windstorm'
  };
}

【问题讨论】:

  • 如果您已经看到使用此示例的示例,则可能涉及的范围很小。最好使用var 或在您的情况下使用constlet 来定义您的变量,除非您要覆盖现有变量。
  • @Seth Hmm... 因为我只是在查看 angular 2 的文档here,而他们从未使用过export class 下的“var”标签:/
  • 哦,抱歉,没注意到那是一堂课。我会在下面详细说明
  • 这不是 ES2015 类。另见here
  • @Bergi 是打字稿吧?我想有人编辑了我原来的标题..

标签: typescript angular variable-declaration


【解决方案1】:

这是一个 TypeScript(和提议的 ES2015)速记糖,用于为 AppComponent 对象类型设置实例变量。这些与 JavaScript 中的实际作用域变量不同。

目前此功能处于 ES2015 的提案阶段。然而,由于 TypeScript 是它自己的语言,它是 ES 的严格超集,它实现了几乎所有提议的 ESnext 标准。使用 Babel 需要注意的是,您需要包含 stage-1 插件(或使用包含此特定 ES 命题的不同转译器)。但由于这只是一个提议,它不是 TypeScript 之外的标准。

此示例的vanilla JavaScript counterpart 转换为:

function AppComponent() {
  this.title = 'Tour of Heroes';
  this.hero = 'Windstorm';
}

var appComponent = new AppComponent();
console.log(appComponent);
console.log(appComponent.title);
console.log(appComponent.hero);

注意:由于 Angular2 传统上使用 TypeScript,如果您选择使用 TypeScript 来支持替代方案,那么准备好 online transpiler 会很有帮助。

【讨论】:

  • 所以它是打字稿,而不是 ES6?
  • 我想我明白你在暗示什么。目前它只是 typescript-only,除非你使用带有 babel 的 stage-1 插件(或包含当前 ES 命题的不同转译器)。但由于这只是一个提议,它不是 TypeScript 之外的标准。但是 TypeScript 语言实现了大多数提议的 ESnext 标准。
  • 是的,请在您的回答中强调这一点。如果你愿意,我也可以重新提出问题
  • 是的,如果你不介意的话。我只是为此投了一个提名。
猜你喜欢
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
  • 2016-09-15
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多