我正在https://angular.io/学习Angular2。在学习本教程后,我最终编写了以下代码
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Tour of Heroes';
hero: Hero = {
id: 1,
name: 'windstorm'
};
}
export class Hero {
id: number;
name: string;
}
这里我的问题是在类Hero和AppComponent类中的对象英雄“:”用于声明并将值赋给属性,但为什么“=”用于赋值属性的值。
由于
答案 0 :(得分:1)
语句hero: Hero
是一个Typescript表达式,它允许Typescript知道属性hero
将使用Hero
Typescript接口。
然后使用=
将实际的vaue分配给该属性。
title
遗漏的原因是你传递的是一个简单的字符串,而Typescript推断title
变量的类型必须是string
。因此,您不必专门定义title
的类型。
答案 1 :(得分:1)
id: number;
声明属性ID,类型号码。
title = 'Tour of Heroes';
声明属性标题,并使用值'英雄之旅'初始化它。它的类型string由TypeScript编译器推断。但它实际上相当于
title: string = 'Tour of Heroes';
这是一些基本的TypeScript语法。 Learn the language
答案 2 :(得分:1)
那是因为在标题中你要分配一个值。这是简单的javascript:
title = 'Tour of Heroes';
虽然英雄,你说的是,你的英雄属性的类型为Hero
,你也正在为它分配一个新值,即打字稿:
hero: Hero = {
id: 1,
name: 'windstorm'
};
所以你可以做一些与你的头衔类似的事情,虽然它是多余的:
title:string = 'Tour of Heroes';
为什么它是多余的?因为title是一个基本类型,当你为它指定一个字符串时,typescript已经知道你的标题变量是一个字符串类型;
答案 3 :(得分:1)
在javascript中
等号 = 用于分配变量:
let title = 'Hello';
冒号:(在本例中)用于将键与其{em>值分开{{1} }:
javascript object
上面示例中的第一个冒号是 typescript 表示法,用于为hero变量指定 type 。
答案 4 :(得分:1)
title = 'Tour of Heroes';
在此,您说的是title
类的属性AppComponent
具有此值'Tour of Heroes'
。
您可以这样指定:
title: string = 'Tour of Heroes';
但是,通过指定类型为string
的值,TypeScript了解title
已经是string
类型,而无需指定它。
相反,在这里:
hero: Hero = {
id: 1,
name: 'windstorm'
};
您说类hero
的属性AppComponent
是Hero
类型并具有此值:
{id: 1, name: 'windstorm'}
因此,使用:,您可以声明属性的类型。使用 = ,您可以分配它的值。
答案 5 :(得分:0)
hero: Hero = {
id: 1,
name: 'windstorm'
};
在这种情况下,Hero
是英雄级别。然后(使用" ="),您将JS对象{ id: 1, name: 'windstorm'};
分配给hero
变量。
title = 'Tour of Heroes';
您只需将值分配给变量,而无需说明其类型。
title : string = 'Tour of Heroes';
甚至
title : any = 'Tour of Heroes';