首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIComponent.getRouterFor显示TypeScript错误:“任意”类型值的不安全返回

UIComponent.getRouterFor显示TypeScript错误:“任意”类型值的不安全返回
EN

Stack Overflow用户
提问于 2022-06-14 08:15:10
回答 3查看 104关注 0票数 0

最近,我将TypeScript添加到我的SAPUI5项目中,类型的ESLint消息出现了问题。

考虑这个简单的例子:

这段很小的代码显示了错误“任何类型值的不安全返回”,但我不知道原因。此函数中的所有内容都有一个类型。这是来自包@sapui5 5/ts-types esm的UIComponent.getRouterFor的描述:

有人能告诉我我做错了什么吗?类型正确吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-06-20 10:37:17

事实证明,衬里错误来自于VSCode ESlint扩展。

由于我们在CAP项目中使用on文件夹,其中包含CDS开发文件夹和类型记录以及应用程序资源的文件夹,所以扩展被混淆了。有两个.eslintrc.json文件。一个在根级(标记为root:true),另一个用于类型记录UI5应用程序。

我设置扩展名的工作目录设置如下

代码语言:javascript
复制
"eslint.workingDirectories": ["./app", "./srv", "./db"],

现在起作用了。

谢谢你@的意见。

票数 0
EN

Stack Overflow用户

发布于 2022-06-17 05:34:37

您使用的是什么版本的UI5类型和ESLint?当我在BaseController中编写相同的代码时,我看到了另一个问题:@typescript-eslint/no-unnecessary-type-assertion

代码语言:javascript
复制
public getRouter(this: BaseController) {
    // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
    return UIComponent.getRouterFor(this) as Router;
}

它将被自动修复为:

代码语言:javascript
复制
public getRouter(this: BaseController) {
    return UIComponent.getRouterFor(this);
}

由于类型推断,不需要进行转换。

顺便说一句:在我的例子中,我使用的是ESLint 8.17.0和OpenUI5 1.102.1。

票数 1
EN

Stack Overflow用户

发布于 2022-06-14 08:21:17

由于getRouterFor()方法已经有声明的类型,所以类型将由类型记录推断。你能试着这样做吗?

代码语言:javascript
复制
public getRouter(this: BaseController) : Router {
 return UIComponent.getRouterFor(this) 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72613611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档