为什么两者都不能显示相同的结果?

时间:2017-07-12 14:38:27

标签: angular typescript

Link

Link

在链接一中,如果我们删除Const,程序就不会运行。为什么呢?
此外,如果我们在链接2中使用链接1的数组实现,反之亦然。 它不会工作。
它有效。 这两种实现有什么区别?

2 个答案:

答案 0 :(得分:0)

我可以回答你的第二个问题。因为在第一个链接中,Hero类中没有构造函数。当您创建像第二个链接这样的数组时,它将创建对象,但不会初始化值。但是如果你在第二个链接中使用第一个链接数组创建它将正常工作。

对于第一个问题,因为你在类外声明它,你必须指定变量类型var或const或让它作为局部变量。

答案 1 :(得分:0)

链接#1将HEROES定义为变量。打字稿中的变量声明以(var|let|const)开头。这是一个信息https://www.typescriptlang.org/docs/handbook/variable-declarations.html。 删除" const"声明使打字稿定义无效,因此控制台中出现错误"意外令牌]"

链接#2将heroes定义为属性。没有前缀声明,默认情况下该属性是公共的。以下是typescript https://www.typescriptlang.org/docs/handbook/classes.html

中有关类和属性的信息

<强>更新 你能澄清下面的陈述吗?

  

此外,如果我们在链接二或副链接中使用链接一的数组实现   反之亦然。 它不会工作

Link#1数组声明样式适用于Link#2示例。像这样:

import { Component } from '@angular/core';

import { Hero } from './hero';

const HEROES: Hero[] = [
  { id: 11, name: 'Mr. Nice' },
  { id: 12, name: 'Narco' },
  { id: 13, name: 'Bombasto' },
  { id: 14, name: 'Celeritas' },
  { id: 15, name: 'Magneta' },
  { id: 16, name: 'RubberMan' },
  { id: 17, name: 'Dynama' },
  { id: 18, name: 'Dr IQ' },
  { id: 19, name: 'Magma' },
  { id: 20, name: 'Tornado' }
];

@Component({
  selector: 'my-app',
  template: `
  <h1>{{title}}</h1>
  <h2>My favorite hero is: {{myHero.name}}</h2>
  <p>Heroes:</p>
  <ul>
    <li *ngFor="let hero of heroes">
      {{ hero.name }}
      </li>
  </ul>
  <p *ngIf="heroes.length > 3">There are many heroes!</p>
`
})
export class AppComponent {
  title = 'Tour of Heroes';
  heroes = HEROES;
  myHero = this.heroes[0];
}