【问题标题】:How does this strange JavaScript code work? Mystery colon这个奇怪的 JavaScript 代码是如何工作的?神秘结肠
【发布时间】:2017-03-13 12:37:08
【问题描述】:

我正在关注官方的 Angular 2 教程,然后我看到了这段代码:

const HEROES: Hero[] = ...

我不明白 HEROES 之后的冒号是如何出现的,我在 JavaScript 和 TypeScript 中找不到关于这种冒号用法的任何文档。我以为冒号只用在对象“键:值”和三元运算符中。

export class Hero {
  id: number;
  name: string;
}

const HEROES: Hero[] = [
  { id: 11, name: 'Mr. Nice' },
  { id: 12, name: 'Narco' },
  { id: 13, name: 'Bombasto' },
  { id: 14, name: 'Celeritas' },
  { id: 15, name: 'Magneta' },
  { id: 16, name: 'RubberMan' },
  { id: 17, name: 'Dynama' },
  { id: 18, name: 'Dr IQ' },
  { id: 19, name: 'Magma' },
  { id: 20, name: 'Tornado' }
];

你能帮我理解这个冒号语法吗?

其他问题的答案没有解释打字稿,它是一种特殊的语法。

【问题讨论】:

  • 是一个包含数组的常量,冒号是数组元素的分隔符..每个元素都是一个对象
  • HEROES: Hero[] 就是你在 TypeScript 中指定变量类型的方式。

标签: angularjs typescript


【解决方案1】:

这是 TypeScript 代码,这是您在 TypeScript 中声明(注释)变量的type 的方式。声明的意思是HEROES的类型应该是Hero[]Hero对象的数组。

var HEROES: Hero[];

TypeScript 编译器将使用此信息来防止对该变量的错误分配——例如,您不能将 number 分配给 HEROES (不仅仅是因为后者是代码中的常量,而是因为这将是一个类型错误)


类型声明可以在强类型编程语言中找到;例如,C# 中的等价物是:

Hero[] HEROES;

【讨论】:

    【解决方案2】:

    这是基本的打字稿声明和初始化。更多详情请参考此链接

    https://www.typescriptlang.org/docs/handbook/basic-types.html

    【讨论】:

      【解决方案3】:
      const HEROES: Hero[] = [
      ...
      ];
      

      : 是 TypeScript 语言中指定变量类型的一种方式,这里 HEROES 是 Hero 实例的 Array。

      这种表示法称为类型注解,参考this

      【讨论】:

        猜你喜欢
        • 2022-11-28
        • 2014-04-30
        • 2018-06-29
        • 1970-01-01
        • 1970-01-01
        • 2014-09-20
        • 2012-09-28
        • 1970-01-01
        相关资源
        最近更新 更多