【问题标题】:Typescript - variables declaration打字稿 - 变量声明
【发布时间】:2016-10-04 02:03:03
【问题描述】:

我不确定这是否是这个问题的地方,但有人告诉我代码审查不适合它。

我刚刚学习 Angular 2 和 Typescript,所以正在学习以下教程:

https://angular.io/docs/ts/latest/tutorial/toh-pt4.html

在第三部分和第四部分之间,heroes 变量在 app.component.ts 中的声明从:

export class AppComponent {
    heroes = HEROES;
}

到:

export class AppComponent {
    heroes: Hero[];
}

我知道第一个将其设置为英雄数组的常量,但为什么第二个使用冒号而不是将其设置为空数组?

将第二个更改为= 实际上会引发表达式预期错误,所以基本上我只是想了解两者之间的区别。

【问题讨论】:

    标签: angular typescript


    【解决方案1】:
    heroes: Hero[];
    

    不将其设置为值。 它只是用

    定义了一个属性
    • 姓名=heroes
    • type = Hero[] 表示Hero 的数组
    • 没有分配一个保持默认值null的值。

    通过初始化,它看起来像

    heroes: Hero[] = [new Hero('Spidey'), new Hero('Batman')];
    

    【讨论】:

    • 不知道你的数字是什么意思。我更新了我的答案。
    【解决方案2】:

    两者的区别在于第一个是javascript,你将heroes变量赋值给常量**HEROES*。

    第二个是打字稿,你说 heroes 变量将是一个英雄数组,基本上你是在定义一个空变量。

    就像 java 或 c# 一样,您可以在课堂上执行 public int myNumber 之类的操作

    【讨论】:

    • 很好,我喜欢 c# 比较 - 我想这就是我知道它正在被转换为 js 的原因,我认为它也在设置变量,因为 js 没有强类型变量那种感觉
    【解决方案3】:

    你的第一个理解是正确的

    heroes = HEROES
    

    现在,

    heroes : Hero [ ];
    

    这里Hero 代表拥有某些属性的类。通过这一行,您告诉打字稿编译器 heroes variable 将持有 list of objects 类型为 Hero(custom or user defined type) 。在 OOP 世界中,class 是用户定义的数据类型,据此您可以使用该类型声明任何变量。

    请注意,你可以用 Type 声明(:) 任何变量,你不能 assing(=) 类型(在 Typescript 中),但你可以将 that Type of data 分配给变量。

    所以在这里你不能使用=

    希望对你有帮助……

    【讨论】:

      【解决方案4】:

      只是补充@Günter Zöchbauer,

      在类/接口声明中,: 在属性名称之后用于定义其类型。

      但是,当您动态创建对象时,这可能会引起一些混乱,在这种情况下,: 标记值分配:

      interface MyInterface {
        myBooleanProperty: boolean = false;
      }
      
      // ... somewhere
      
      let a = {
        myBooleanProperty: true
      };
      
      // and to add a little more fun
      
      let b: MyInterface = {
        myBooleanProperty: true
      }
      

      【讨论】:

        猜你喜欢
        • 2017-06-10
        • 1970-01-01
        • 1970-01-01
        • 2017-10-22
        • 2016-06-15
        • 1970-01-01
        • 2021-02-17
        • 1970-01-01
        • 2013-01-22
        相关资源
        最近更新 更多