Javascript 如何使用typescript在本机脚本中实现Observable

Javascript 如何使用typescript在本机脚本中实现Observable,javascript,typescript,observable,nativescript,Javascript,Typescript,Observable,Nativescript,我刚开始学习本机脚本框架,现在正在学习官方网站上的“JavaScript入门”教程。我有Java的背景,所以我更熟悉typescript。我尝试将所有JavaScript代码替换为与typescript等效的代码 到目前为止,一切正常,但当我到达时,我对如何在typescript中实现Observable感到困惑。这是网站上的代码: var observableModule = require("data/observable"); var user = new observableModul

我刚开始学习本机脚本框架,现在正在学习官方网站上的“JavaScript入门”教程。我有Java的背景,所以我更熟悉typescript。我尝试将所有JavaScript代码替换为与typescript等效的代码

到目前为止,一切正常,但当我到达时,我对如何在typescript中实现Observable感到困惑。这是网站上的代码:

var observableModule = require("data/observable");

var user = new observableModule.fromObject({
    email: "user@domain.com",
    password: "password"
});
这就是我想到的:

import {Observable} from 'data/observable';
class User extends Observable {
    email = "user@domain.com";
    password = "password";
}

let user = new User();

当我测试它时,它似乎起作用了。上面的代码是等效的还是我遗漏了什么?

是的,这是使“对象”可见的方法。另一种不同但又相似的方法是使整个“ViewModel”可见,例如:

import { Observable } from "data/observable";

export class ViewModel extends Observable {    
    constructor() {
        super();

        this.set("propertyA", 42);
        this.set("propertyB", "some value");
    }

    public updatedValues() {
        this.set("propertyA", 3.14);
        this.set("propertyB", "some new value");
    }
}
之后,如果将
ViewModel
设置为页面的
bindingContext
,则可以进行常规绑定,并且对
ViewModel
的那些属性的任何更新都将传播到视图中

<Label text="{{ propertyA }}"/>
<Label text="{{ propertyB }}"/>

是的,这是使“对象”可见的方法。另一种不同但又相似的方法是使整个“ViewModel”可见,例如:

import { Observable } from "data/observable";

export class ViewModel extends Observable {    
    constructor() {
        super();

        this.set("propertyA", 42);
        this.set("propertyB", "some value");
    }

    public updatedValues() {
        this.set("propertyA", 3.14);
        this.set("propertyB", "some new value");
    }
}
之后,如果将
ViewModel
设置为页面的
bindingContext
,则可以进行常规绑定,并且对
ViewModel
的那些属性的任何更新都将传播到视图中

<Label text="{{ propertyA }}"/>
<Label text="{{ propertyB }}"/>


谢谢你,弗拉基米尔谢谢你,弗拉基米尔你可以用这种方法也可以用这种方法