2016-10-06 10 views
1

Ich versuche, eine Basisklasse in Typoskript zu schreiben ionische Verwendung 2. Hier ist mein Code:Typoskript Konstruktor wird mir nichts lassen definieren

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; 
    } 

} 

Das Typoskript nicht kompiliert. Ich erhalte diesen Fehler:

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

Wie definiere ich Gehalt im Konstruktor?

+1

Versuchen Sie es außerhalb der Konstruktor deklarieren, bevor sie einen Wert innerhalb des Konstruktors zuweisen. Gehalt: Anzahl; Konstruktor (public navCtrl: NavController) {this.salary = 7;} ' –

+0

deklariere diese Variable. etwas wie das: salay: Nummer – Manish

Antwort

2

Klassen Mitglied muß definiert werden, entweder im Konstruktor Signatur mit dem öffentlichen/protected/privat (wie Sie mit dem navCtrl Mitglied tun) oder wie folgt aus:

export class HomePage { 
    private salary: number; 

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

Ionic ist kein Typoskript Bibliothek aber ein Javascript, so dass ihre Dokumentation Javascript und kein Typoskript ist.
Mit Javascript (bei Verwendung von ES6-Klassen) müssen Sie die Mitglieder nicht wie in Typoskript deklarieren.

Wenn das Typoskript Code in meiner Antwort in Javascript kompiliert sieht es wie folgt aus:

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

Wie Sie sehen können, auch hier gibt es keine Spur von dem öffentlich/privat, oder die Erklärung der Mitglieder, das ist nur ein Typoskript Ding und es war da (wahrscheinlich) die erste Version.

+0

Ist das ein neues Feature des Typs Skript? Es ist nicht in irgendeiner der ionischen 2 Dokumentation, dh https://ionicframework.com/docs/v2/api/components/nav/NavPush/ tun sie das überhaupt nicht. Wie würde es für eine Komponente funktionieren? – Philip7899

+0

Überprüfen Sie meine überarbeitete Antwort –

1

können Sie erklären Gehalt wie diese

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

Hinweis: Keine Notwendigkeit public Schlüsselwort verwenden öffentliche Mitglieder zu erklären.

Verwenden Sie private salary: number;, um es als privat zu machen.

mit Standardwert initialisieren verwenden salary: number = 10;

Verwandte Themen