typescript构造函数不允许我定义任何内容

时间:2016-10-06 14:50:07

标签: angular typescript ionic-framework ionic2

我正在尝试使用离子2在typescript中编写基本类。这是我的代码:

import { Component } from '@angular/core';

import { NavController } from 'ionic-angular';

import {FishPage} from '../fish';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  constructor(public navCtrl: NavController) {
    this.salary = 7;
  }

}

打字稿没有编译。我收到了这个错误:

  

错误TS2339:'HomePage'类型中不存在属性'salary'。

如何在构造函数中定义薪水?

2 个答案:

答案 0 :(得分:3)

需要使用public / protected / private(与navCtrl成员一样)在构造函数签名中定义类成员,或者像这样:

export class HomePage {
    private salary: number;

    constructor(public navCtrl: NavController) { ... }
}

Ionic不是一个打字稿库,而是一个javascript,因此他们的文档是javascript而不是打字稿 使用javascript(当使用es6类时)你不需要像打字稿那样声明你需要的成员。

当我的答案中的打字稿代码编译成javascript时,它看起来像这样:

var HomePage = (function () {
    function HomePage(navCtrl) {
        this.navCtrl = navCtrl;
    }
    return HomePage;
}());

正如你所看到的,这里也没有关于公共/私人或成员声明的痕迹,这只是一个打字稿的东西而且它可能来自(可能)第一个版本

答案 1 :(得分:2)

你可以像这样申报工资

export class HomePage {
  salary: number;
  constructor(navCtrl: NavController) {
    this.salary = 7;
  }
}

注意:无需使用public关键字来声明公共成员。

使用private salary: number;将其设为私有。

要使用默认值初始化,请使用salary: number = 10;