ค้นหาเว็บไซต์

javascript - ตัวสังเกตและคุณสมบัติที่คำนวณได้ของ Ember js ใน typescript


ฉันจะกำหนดตัวสังเกต (observers) และคุณสมบัติที่คำนวณได้ (computed properties) ของ Ember.js โดยใช้ TypeScript ได้อย่างไร?

ฉันต้องเขียนโค้ดต่อไปนี้ในไทป์สคริปต์

module App {
App.UserController = ember.ObjectController.extend({
    firstName: "John",
    lastName: "Doe",
    fullName: function() {
       return this.get("firstName") + " " + this.get("lastName");
    }.property("firstName", "lastName")
});
}

บางอย่างเช่น:

class UserController extends ember.ObjectController {
    firstName: string;
    lastName: string;

    constructor() {
        super();
        this.firstName = "John";
        this.lastName = "Doe";
    }

    get fullName(): string {
        return this.firstName + " " + this.lastName;
    }.property("firstName", "lastName")
}

แต่นี่ดูเหมือนไม่ได้ผล ใครสามารถบอกวิธีที่ถูกต้องในการทำสิ่งนี้โดยไม่ใช้จาวาสคริปต์ได้ไหม?

คำตอบ #1

นี่คือเวอร์ชันของโค้ดของคุณที่จะคอมไพล์ได้:

module App {

    export var UserController = Ember.ObjectController.extend({
        firstName: "John",
        lastName: "Doe",
        fullName: function () {
            return this.get("firstName") + " " + this.get("lastName");
        }.property('model.isCompleted')
    });
}

// Example:
var x = App.UserController;

อัปเดต

คุณสามารถนำสิ่งนี้ไปใช้ด้วยคลาสได้ นี่คือตัวอย่างที่คอมไพล์ได้:

class UserController extends Ember.ObjectController {
    private firstName: string;
    private lastName: string;

    constructor() {
        super();
        this.firstName = "John";
        this.lastName = "Doe";
    }

    get fullName(): string {
        return this.firstName + " " + this.lastName;
    }
}

var x = new UserController();

console.log(JSON.stringify(x));