Javascript Typescript";找不到名称<;fieldname>&引用;

Javascript Typescript";找不到名称<;fieldname>&引用;,javascript,typescript,Javascript,Typescript,我对打字很不熟悉 我创建了一个带有一些私有字段的类。当我试图为类方法中的匿名回调函数中的一个字段赋值时,我得到了一个错误 (TS) Cannot Find the name '_tokens' 我怀疑存在范围问题,但从我对JavaScript的理解来看,这应该不是问题。我不知道如何修理它。有什么想法吗 看。。“populateTokens()”方法查找错误 class SingleSignOn { private _appTokensURL: string = "/api/IFSe

我对打字很不熟悉

我创建了一个带有一些私有字段的类。当我试图为类方法中的匿名回调函数中的一个字段赋值时,我得到了一个错误

(TS) Cannot Find the name '_tokens'
我怀疑存在范围问题,但从我对JavaScript的理解来看,这应该不是问题。我不知道如何修理它。有什么想法吗

看。。“populateTokens()”方法查找错误

class SingleSignOn {

    private _appTokensURL: string  = "/api/IFSessionCache/Auth/";
    private _tokens: string[];

    /**
     * Initialize an instance of the SingleSignOn class to manage the permissions for the 
     * application associated with the application.
     */
    constructor() {

        this.populateTokens();
    };


    /**
     * Gets a list of permissions tokens associated with the currently logged on user for 
     * the application.
     */
    private getApplicationTokens(): Q.IPromise<{}> {

        return Unique.AJAX.Get(this._appTokensURL, null, ENUMS.AjaxContentTypes.JSON);
    };


    private populateTokens () {

        this.getApplicationTokens().then(
            function (data) {
                _tokens = <string[]>data; // (TS) Cannot find name "_tokens"
            });
    };
};
单点登录类{
private-appTokensURL:string=“/api/IFSessionCache/Auth/”;
私有_令牌:字符串[];
/**
*初始化SingleSignOn类的实例以管理
*与应用程序关联的应用程序。
*/
构造函数(){
这是populateTokens();
};
/**
*获取与的当前登录用户关联的权限令牌列表
*应用程序。
*/
私有getApplicationTokens():Q.IPromise{
返回Unique.AJAX.Get(this.\u appTokensURL,null,ENUMS.AjaxContentTypes.JSON);
};
私人住宅区(){
这是.getApplicationTokens()。然后(
功能(数据){
_令牌=数据;//(TS)找不到名称“\u令牌”
});
};
};

我想您只是缺少了
令牌中的
这个
关键字:

this._tokens = <string[]>data;
this.\u令牌=数据;

您使用了错误的语法:

this.getApplicationTokens().then(
(data) => {
    this._tokens = <string[]>data; // note: turned into an arrow function and added the `this` keyword
});
this.getApplicationTokens()。然后(
(数据)=>{
this._tokens=data;//注意:转换为箭头函数并添加了'this'关键字
});
注意如果继续使用
function()…
语法,则
关键字将指向类实例,而是指向被调用方


问候语

类的属性没有作用域,只要它们所属的对象存在,它们就存在,可以访问该对象的所有对象也可以访问其所有属性。但是,始终必须访问其对象上的属性,例如
something.\u标记
this.\u标记
在方法内部。此外,您还必须确保
this
就是您认为的,在您的情况下,您必须使用箭头函数:


有。这些函数对您有帮助吗?这还不够,OP还必须将回调函数更改为箭头函数,否则
将不会指向类instanceThanks。我对箭头功能了解得不多!也为有用的链接!
this.getApplicationTokens().then( (data) => {
     this._tokens = data as string[];
});