类或对象?

时间:2018-02-03 21:05:46

标签: typescript

在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。

进行简单的解释

3 个答案:

答案 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' };。还有其他方法可以获得对象的不变性,但在语法上它们是一场噩梦,但这既不是在这里也不是在那里。这只是将实例化简化为一行“(即分号前)的一种方法。”