- 这个问题与TypeScript有关,但我相信向SAPUI 5社区寻求帮助可能会找到解决方案。
我正在使用Typescript处理一个SAPUI 5项目,我已经将@sapui5/types
包作为开发依赖项安装。我在Component.ts
文件中定义了一个名为getContentDensityClass()
的函数,如下所示:
// webapp/Component.ts
public getContentDensityClass() {
// ...
return this._sContentDensityClass;
}
字符串
在我的App.controller.ts
中,我想像这样使用这个函数:
// webapp/controller/App.controller.ts
public onMessagePopoverPress(oEvent: Event) {
// ...
syncStyleClass(this.getView()
.getController()
.getOwnerComponent()
.getContentDensityClass(), // here is the error
this.getView(),
oMessagePopover);
// ...
}
型
但是,TypeScript会引发以下错误:
getContentDensityClass does not exist on getOwnerComponent of type Component
个
为了解决这个问题,我尝试从@sapui5/types扩展Component类型,如下所示:
declare module "@sapui5/types" {
export interface Component {
getContentDensityClass(): string;
}
}
型
尽管进行了此尝试,但错误仍然存在。
1条答案
按热度按时间xytpbqjk1#
getOwnerComponent
返回通用UI5组件类。但是,自定义方法getContentDensityClass
是在自定义组件类中定义的。你应该Assert
getOwnerComponent
的类型,例如:字符串
如果你不想每次都这样做,我建议你把它放在你的BaseController中
型
那么你的原始代码应该不需要任何修改就可以工作。