[英]Getting typescript error in angular , not able to bind this properly
const stateObj = {
indicators: stateIndicators,
filters: stateFilters,
benchmarks: stateBenchmarks,
request: stateRequest,
ready: stateReady,
visualization: stateVisualization,
dimensions: stateDimensions,
datasets: stateDatasets
};
extend({
getDefaultIndicators: function () {
return stateObj.indicators.enabledIndicators
.map((indicator) => find(stateObj.indicators.indicators, { name: indicator }));
},
getEnabledIndicators: function () {
return this.request.indicators
.map((i) => find(stateObj.indicators.indicators, { name: i }));
},
getEnabledBenchmarks: function () {
return filter(stateObj.benchmarks, 'selected');
},
save: function () {
if (tile) { return; }
let serializedState = this.serialize();
this.userStorage.saveExploreState(entity, serializedState);
},
serialize: function () {
return {
request: this.request,
benchmarks: map(this.getEnabledBenchmarks(), 'name'),
visualization: this.visualization,
dimensions: this.dimensions,
datasetId: datasetId
};
}
}, stateObj);
Property 'request' does not exist on type '{ getDefaultIndicators: () => (Indicator | undefined)[]; getEnabledIndicators: () => any; getEnabledBenchmarks: () => { selected: boolean; name: string; }[]; save: () => void; serialize: () => any; }
Extend is lodash function I am getting type error for 'this.dimensions', 'this.visualization' as 'this' is not binding with stateObj and also 'this.userStorage' is class property , How to fix this issue. Extend 是 lodash 函数,我收到“this.dimensions”、“this.visualization”的类型错误,因为“this”未与 stateObj 绑定,而且“this.userStorage”是类属性,如何解决此问题。
Use arrow function to bind this context.使用箭头函数绑定此上下文。
Try this:尝试这个:
extend({
getDefaultIndicators: () => {
return stateObj.indicators.enabledIndicators
.map((indicator) => find(stateObj.indicators.indicators, { name: indicator }));
},
getEnabledIndicators: () => {
return this.request.indicators
.map((i) => find(stateObj.indicators.indicators, { name: i }));
},
getEnabledBenchmarks: ()=> {
return filter(stateObj.benchmarks, 'selected');
},
save:() => {
if (tile) { return; }
let serializedState = this.serialize();
this.userStorage.saveExploreState(entity, serializedState);
},
serialize: ()=> {
return {
request: this.request,
benchmarks: map(this.getEnabledBenchmarks(), 'name'),
visualization: this.visualization,
dimensions: this.dimensions,
datasetId: datasetId
};
}
}, stateObj);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.