英雄角度之旅:为什么一个人用冒号分配,另一个用等号分配

Rod*_*Rod 1 typescript angular

环境:Angular 5+
来源:https://angular.io/tutorial

heroes.component.ts类中有一个带冒号的赋值,如下所示:

export class HeroesComponent implements OnInit {
  heroes: Hero[];
Run Code Online (Sandbox Code Playgroud)

但是在app.component.ts课堂上有一个等号的作业:

export class AppComponent {
  title = 'app';
}
Run Code Online (Sandbox Code Playgroud)

为什么这令我困惑?

lea*_*iro 5

在这段代码中heroes: Hero[];没有赋值给var heroes,但是你说它是一个数组Hero(现在是undefined).

现在,在这段代码中title = 'app';你将字符串分配给'app'var title,因为typescript编译器可以推断出这'app'是一个字符串,不需要指定它(title: string = 'app';),heroes在编译器没有的情况下不是这种方式.知道将分配给var的内容,除非你通过"tell"指定它: Hero[](它是一个数组Hero)