#angular #typescript #ionic-framework #ionic2
#angular #typescript #ионный фреймворк #ionic2
Вопрос:
Я пытаюсь написать базовый класс на typescript, используя ionic 2. Вот мой код:
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 не компилируется. Я получаю эту ошибку:
ошибка TS2339: свойство ‘зарплата’ не существует для типа ‘Домашняя страница’.
Как мне определить зарплату в конструкторе?
Комментарии:
1. Попробуйте объявить его вне конструктора, прежде чем присваивать ему значение внутри конструктора.
salary:number; constructor(public navCtrl: NavController){ this.salary = 7;}
2. объявите эту переменную. что-то вроде этого: salay:number
Ответ №1:
Член класса должен быть определен либо в подписи конструктора с использованием public / protected / private (как вы сделали с navCtrl
участником), либо следующим образом:
export class HomePage {
private salary: number;
constructor(public navCtrl: NavController) { ... }
}
Ionic — это не библиотека typescript, а библиотека javascript, поэтому их документация — javascript, а не typescript.
С помощью javascript (при использовании классов es6) вам не нужно объявлять члены, как вам нужно в typescript.
Когда код typescript в моем ответе компилируется в javascript, он выглядит так:
var HomePage = (function () {
function HomePage(navCtrl) {
this.navCtrl = navCtrl;
}
return HomePage;
}());
Как вы можете видеть, здесь тоже нет никаких следов public / private или объявления членов, это просто typescript, и это было там (вероятно) из первой версии.
Комментарии:
1. Это новая функция type script? этого нет ни в одной документации ionic 2, т.е. ionicframework.com/docs/v2/api/components/nav/NavPush они вообще этого не делают. Как это будет работать для компонента?
2. Проверьте мой пересмотренный ответ
Ответ №2:
Вы можете объявить зарплату следующим образом
export class HomePage {
salary: number;
constructor(navCtrl: NavController) {
this.salary = 7;
}
}
Примечание: нет необходимости использовать public
ключевое слово для объявления общедоступных членов.
используйте private salary: number;
, чтобы сделать его закрытым.
Для инициализации со значением по умолчанию используйте salary: number = 10;