这个奇怪的 JavaScript 代码是如何工作的?神秘的结肠

gum*_*ost 7 angularjs typescript

我正在关注官方的 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' }
];
Run Code Online (Sandbox Code Playgroud)

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

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

Joh*_*isz 8

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

var HEROES: Hero[];
Run Code Online (Sandbox Code Playgroud)

TypeScript 编译器将使用此信息来防止对该变量进行错误赋值 - 例如,您不能将 a 赋值给numberHEROES 不仅因为后者是代码中的常量,而且因为它会导致类型错误)


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

Hero[] HEROES;
Run Code Online (Sandbox Code Playgroud)