2016-10-06 4 views
1

を定義できません。ここに私のコードです:typescriptですコンストラクタは、私が、イオン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; 
    } 

} 

typescriptですがコンパイルされていません。このエラーが発生します:

error TS2339: Property 'salary' does not exist on type 'HomePage'.

コンストラクタで給与を定義するにはどうすればよいですか?

+1

はそれをコンストラクタ内の値を割り当てる前に、コンストラクタの外にそれを宣言してみ使用し、デフォルト値で初期化します。 'salary:number;コンストラクタ(public navCtrl:NavController){this.salary = 7;} ' –

+0

はその変数を宣言します。 salay:number – Manish

答えて

2

クラスのメンバーは、いずれかを使用して、コンストラクタの署名で、定義する必要が公開/保護/プライベート(あなたがnavCtrlメンバーで行ったように)、またはこのような:

export class HomePage { 
    private salary: number; 

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

イオンはtypescriptですではありませんライブラリはjavascriptのものなので、彼らのドキュメンテーションはjavascriptであり、typescriptではありません。
javascript(es6クラスを使用している場合)では、必要に応じてtypescriptでメンバーを宣言する必要はありません。私の答えでtypescriptですコードではJavaScriptにコンパイルするとき

が、それはこのようになります:あなたが見ることができるように

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

が、ここでも公開/秘密の痕跡、またはメンバーの宣言ありません、それはですタイプスクリプトのもので、最初のバージョン(おそらく)からのものでした。

+0

これはtype scriptの新機能ですか?それはイオン2文書のいずれにもありません。つまり、https://ionicframework.com/docs/v2/api/components/nav/NavPush/彼らはまったくそれをしません。コンポーネントの場合、どのように動作しますか? – Philip7899

+0

改訂版の回答を確認する –

1

あなたはこの

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

ノートのような給料を宣言することができます。publicメンバーを宣言するpublicキーワードを使用する必要はありません。

private salary: number;を非公開にする。

salary: number = 10;

関連する問題