我不确定这是否是这个问题的地方,但我被告知代码审查不适合它.
我刚学习Angular 2和Typescript,所以我正在学习以下教程:
https://angular.io/docs/ts/latest/tutorial/toh-pt4.html
在第三部分和第四部分之间,heroes变量的声明app.component.ts来自:
export class AppComponent {
heroes = HEROES;
}
Run Code Online (Sandbox Code Playgroud)
至:
export class AppComponent {
heroes: Hero[];
}
Run Code Online (Sandbox Code Playgroud)
我理解第一个将它设置为英雄数组的常量,但为什么第二个使用冒号而不只是将它设置为空数组?
将第二个更改为=实际会抛出表达式预期错误,所以基本上我只是想了解两者之间的差异.
我正在看这个代码示例,并偶然发现了这种语法:
import React, { Component } from 'react';
const PrivateRoute = ({component:Component, ...rest}) => (
//(...)
<Component {...props} />
// (...)
);
Run Code Online (Sandbox Code Playgroud)
我对这:Component部分感到困惑.这看起来像一个静态类型的注释,其行为类似于泛型,但这是Javascript所以它只能是一个对象,对吧?如果这是一个对象,这是否意味着该函数将默认的空Component对象分配给它自己的参数?如果是这样,它如何能够从调用者接收它,例如(根据示例):
<PrivateRoute path="/protected" component={Protected} />
Run Code Online (Sandbox Code Playgroud)