Recientemente agregué TypeScript a mi proyecto SAPUI5 y tuve problemas con los mensajes ESLint para los tipos.
Considere este sencillo ejemplo: 
Este pequeño fragmento de código muestra el error "Retorno no seguro de cualquier valor escrito", pero no puedo entender por qué. Todo en esta función tiene un tipo. Esta es la descripción de UIComponent.getRouterFor del paquete @sapui5/ts-types-esm: 
¿Alguien puede decirme qué estoy haciendo mal? ¿Son correctos los tipos?
¿Qué versión de los tipos UI5 y ESLint está utilizando? Cuando estoy escribiendo el mismo código en mi BaseController , veo otro problema: @typescript-eslint/no-unnecessary-type-assertion
public getRouter(this: BaseController) { // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion return UIComponent.getRouterFor(this) as Router; }que se corregirá automáticamente a:
public getRouter(this: BaseController) { return UIComponent.getRouterFor(this); }Debido a la inferencia de tipos, no debería ser necesaria la conversión.
Por cierto: en mi caso, estoy usando ESLint 8.17.0 y OpenUI5 1.102.1.
Dado que el método getRouterFor() ya tiene un tipo declarado, el tipo se inferirá mediante mecanografiado. Puedes intentar hacer algo como esto:
public getRouter(this: BaseController) : Router { return UIComponent.getRouterFor(this) }Resultó que los errores de pelusa provenían de la extensión VSCode ESlint.
Dado que estamos usando una carpeta para el proyecto CAP que contiene las carpetas para el desarrollo de CDS con mecanografiado y también una carpeta para los recursos de la aplicación, la extensión se confundió. Hay dos archivos .eslintrc.json. Uno en el nivel raíz (marcado con root:true) y otro para la aplicación TypeScript UI5.
Configuré la configuración de los directorios de trabajo de la extensión de esta manera
"eslint.workingDirectories": ["./app", "./srv", "./db"],y ahora funciona.
Gracias @Peter Muessig por tu aporte.