答案 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];
}