在Angular官方教程中,他们有一个简单类(https://angular.io/tutorial/toh-pt1)的例子,他们像对象一样使用这个类,我不明白。
<div class="schedule-call-container">
<mat-form-field>
<mat-select placeholder="Favorite food">
<mat-option *ngFor="let food of foods" [value]="food.value">
{{ food.viewValue }}
</mat-option>
</mat-select>
</mat-form-field>
</div>
它就像这样使用了......
class Hero{
id: number;
name: string
,这用作HTML中的列表。 (https://angular.io/tutorial/toh-pt2)
对于Typescript的新手,我根本不明白这是如何完成的。在Python中为ex。使用Class的唯一方法是实例化它。我知道可以在Javascript中像这样创建和使用对象,但据我所知,不使用class关键字。
我用谷歌搜索了这个,看过打字稿上的视频,找不到其他人在做类似的事情。如果有人能指出我的文档,我会非常感激!或者,只用ex。
进行简单的解释答案 0 :(得分:2)
这或多或少只是基本的JavaScript。 {}
在JavaScript中实例化一个对象,{ id: 5 }
实例化一个对象并为其赋予'id'
字段,其值为5
。
此外,JavaScript具有“鸭子打字”,因此要将“类型”与类匹配,您只需要共享相同的成员。没有实际的“类型”。 TypeScript引入了类型检查,但底层对象仍然没有内在类型。
TypeScript也有很多类型推断,因此它可以看到成员匹配并推断它们应该是Hero
类型。
答案 1 :(得分:1)
我发现这也很混乱。使用class
关键字后,我认为使用new
创建实例更有意义。
它不仅仅是“语法糖”,它还涉及定义工作流程。
如果您更喜欢Javascript语法来处理对象,那么Typescript提供了一种为对象定义Type的方法:
type Hero = { id: number, name: string }
const Heroes: Hero[] = [
{id:3, name:"henk"}
]
答案 2 :(得分:0)
我们来看看文档。
将一个HEROES常量定义为十个英雄阵列。
你明白这里发生了什么吗?我们采用一系列ID和名称,并将其分配给一系列英雄元素。单个元素版本如下所示:
const HERO: Hero = { id:21, name: 'myName'};
它本质上是类似结构的,但测试here会向您显示它刚刚转变为var HERO = { id: 50, name: 'test' };
。还有其他方法可以获得对象的不变性,但在语法上它们是一场噩梦,但这既不是在这里也不是在那里。这只是将实例化简化为一行“(即分号前)的一种方法。”