如何给这个属性赋一个类型

时间:2016-08-28 08:54:23

标签: angular typescript

ngOnInit() {

  let isTest: boolean = this.isTest || false;

  this.isTest: boolean = this.isTest || false;
}

使用let已编译的代码变为var isTest = this.isTest || false正如您所期望的那样,但在分配给this时,它变为:

this.isTest;
boolean = this.isTest || true;

并且还会抛出错误boolean is not defined,这是有道理的。

然而,我不明白为什么我无法按照我this的方式定义属性的类型。

为什么这样做以及正确的做法是什么?

编辑:

显然你不能在方法中声明类成员,但与@NitzanTomer相同的解决方案是否适用于Angular 2的组件输入属性?

示例:

@Component({
  selector: 'test',
  inputs: [
    'isTest'
  ]
})

export class isTest implements OnInit {
  isTest: boolean;

  ngOnInit() {
    this.isTest = this.isTest || false;
  }
}

1 个答案:

答案 0 :(得分:4)

你不能在方法中声明类成员,它应该是:

class YourClass {
    isTest: boolean;

    ngOnInit() {
        this.isTest = this.isTest || false;
    }

    ...
}

修改

您也可以在构造函数中声明类成员,如下所示:

class YourClass {
    constructor(private isTest: boolean) { }
}

第二次编辑

我不是一个有角度的开发人员,但基于示例,您似乎需要像我回答的那样做,只是有时你用@Input装饰这些成员。

For example

@Component({
    selector: 'hero-child',
    template: `
        <h3>{{hero.name}} says:</h3>
        <p>I, {{hero.name}}, am at your service, {{masterName}}.</p>
    `
})
export class HeroChildComponent {
    @Input() hero: Hero;
    @Input('master') masterName: string;
}

或者:

@Component({
    selector: 'hero-parent',
    template: `
        <h2>{{master}} controls {{heroes.length}} heroes</h2>
        <hero-child *ngFor="let hero of heroes"
            [hero]="hero"
            [master]="master">
        </hero-child>
    `
})
export class HeroParentComponent {
    heroes = HEROES;
    master: string = 'Master';
}