如何在对象 Typescript 中使用此描述符?
How to use this descriptor in object Typescript?
我有一个接口:
export interface DisabledFormFields {
active: number,
functions: {
get?($event: any): string;
set?($event: any): void;
}
}
然后我根据这个接口创建对象:
var instance = {
active: 0,
set(event) {
this.active = event.index;
},
get(event) {
return "-";
},
}
使用这个:
instance.set({index: 0});
instance.get({});
为什么我无法使用对象方法内部的 this
描述符访问 属性 active
?
您的(略有改动的)对象:
var instance: Disable = {
active: 0,
set(event: any) {
this.active = event.index;
},
get(event: any) {
event;// doing nothing but dealing with the noUnusedParameteres
return "-";
},
}
可能有这个接口:
interface Disable {
active: number;
set?(event: any): void; // not necessarily optional
get?(event: any): string;// idem
}
如果 set 和 get 是可选的,则需要使用类型保护来查看它们是否已定义:
if(instance.set) {
instance.set({index: 1});// it is defined in this block
}
在您的原始界面中,您有这个内部对象...
functions: {
get?($event: any): string;
set?($event: any): void;
}
您没有包含在您的对象中。该对象没有实现接口也是因为结构不同并且它在 var 声明中没有注释。您必须更改界面或您的对象。
我用过游乐场并尝试过这个
var instance = {
active: 0,
set(event) {
this.active = event.index;
},
get(event) {
return "<h1>-</h1>";
},
}
instance.set({index: 0});
instance.get({});
document.writeln(instance.get({}));
转译为:
var instance = {
active: 0,
set: function (event) {
this.active = event.index;
},
get: function (event) {
return "<h1>-</h1>";
},
};
instance.set({ index: 0 });
instance.get({});
document.writeln(instance.get({}));
当点击 运行 时,它会在我的浏览器中打开一个新标签页:
-
我有一个接口:
export interface DisabledFormFields {
active: number,
functions: {
get?($event: any): string;
set?($event: any): void;
}
}
然后我根据这个接口创建对象:
var instance = {
active: 0,
set(event) {
this.active = event.index;
},
get(event) {
return "-";
},
}
使用这个:
instance.set({index: 0});
instance.get({});
为什么我无法使用对象方法内部的 this
描述符访问 属性 active
?
您的(略有改动的)对象:
var instance: Disable = {
active: 0,
set(event: any) {
this.active = event.index;
},
get(event: any) {
event;// doing nothing but dealing with the noUnusedParameteres
return "-";
},
}
可能有这个接口:
interface Disable {
active: number;
set?(event: any): void; // not necessarily optional
get?(event: any): string;// idem
}
如果 set 和 get 是可选的,则需要使用类型保护来查看它们是否已定义:
if(instance.set) {
instance.set({index: 1});// it is defined in this block
}
在您的原始界面中,您有这个内部对象...
functions: {
get?($event: any): string;
set?($event: any): void;
}
您没有包含在您的对象中。该对象没有实现接口也是因为结构不同并且它在 var 声明中没有注释。您必须更改界面或您的对象。
我用过游乐场并尝试过这个
var instance = {
active: 0,
set(event) {
this.active = event.index;
},
get(event) {
return "<h1>-</h1>";
},
}
instance.set({index: 0});
instance.get({});
document.writeln(instance.get({}));
转译为:
var instance = {
active: 0,
set: function (event) {
this.active = event.index;
},
get: function (event) {
return "<h1>-</h1>";
},
};
instance.set({ index: 0 });
instance.get({});
document.writeln(instance.get({}));
当点击 运行 时,它会在我的浏览器中打开一个新标签页: