打字稿对象类型不允许访问属性

时间:2018-08-30 07:09:24

标签: angular typescript

我正在尝试创建对象类型的变量,并使用属性对其进行初始化。但是当我尝试访问该属性时,它显示错误“属性____在对象类型上不存在”。我已经搜索过,发现有3种类型的object,Object和{}。我可以使用{}访问我的属性,但是不能使用object和Object。

export class customDirective {
    configg:Object={
        qSelector:'.card-text'
    };
    @HostListener('mouseover') onmouseover(){
        var element =this.el.nativeElement.querySelector(this.configg.qSelector);
        this.ren.setElementStyle(element, 'display', 'block');
        this.isHovering = true;
    }
}

2 个答案:

答案 0 :(得分:1)

使用 []

访问对象类型的属性

this.configg['qSelector']不是this.configg.qSelector

export class customDirective {
    configg:Object={
        qSelector:'.card-text'
    };
    @HostListener('mouseover') onmouseover(){
        var element =this.el.nativeElement.querySelector(this.configg['qSelector']);
        this.ren.setElementStyle(element, 'display', 'block');
        this.isHovering = true;
    }
}

答案 1 :(得分:0)

Object是一个实际的类:https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Object。它定义了某些属性,而qSelector不是其中之一。

要定义可以设置任何属性而不会抱怨TypeScript的任意对象,请使用any类型(或完全不包含类型定义):

configg: any = {
    qSelector:'.card-text'
};