¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Errores comunes al usar sap.m.IconTabHeader y sap.ui.layout.VerticalLayout en TypeScript: soluciones rápidas

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 3 Vistas
0
Cargando...

Hola Equipo de TypeScript,

Aquí obtengo 3 errores que creo que no son errores

Estoy usando

sap.m.IconTabHeader para .getSelectedKey

y

sap.ui.layout.VerticalLayout para .setVisible

en la consola está funcionando

peter.muessig

¿Tienes una solución rápida para esto?

Adiós Luis

image.png
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Luis Frey

Este error indica que has utilizado una propiedad que no existe en el tipo de objeto al que estás intentando acceder. Verifica el tipo de objeto al que estás accediendo y asegúrate de que la propiedad que intentas acceder esté definida para ese tipo. Si no lo está, deberás cambiar la propiedad que intentas acceder o el tipo de objeto al que estás intentando acceder.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

Este error se debe a que `byId` devuelve un `UI5Element` (una clase base de la que extienden todos los controles de vista), y esta no tiene los métodos que estás intentando llamar. Intenta convertir el elemento a la clase de control que realmente estás usando en la vista.

const iconTabHeader = this.byId('idIconTabHeader') as IconTabHeader
switch(iconTabHeader.getSelectedKey()) { ... }

Para el método `setVisible` debería convertirse como mínimo a la clase 'Control'.

const c = this.byId('id') as Control
c.setVisible(true)

Funciona en la consola porque es JavaScript puro, que es menos estricto que TypeScript. En realidad, tu código podría ejecutarse sin errores, pero TypeScript no te permite compilar el código sin verificar los tipos.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

¡Genial, funcionó!

image.png
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Luis,

el mensaje de error ya lo indica: TypeScript no encuentra estos métodos en UI5Element (que representa la clase base sap.ui.base.Element de todos los Controles, etc.).

El compilador de TypeScript simplemente no sabe que this.byId(...) devuelve un IconTabHeader. No puede saberlo, ya que el tipo de control devuelto depende del ID que se proporciona como argumento (y no hay funcionalidad que busque el ID en la XMLView y le diga a TypeScript qué tipo de control tiene este ID).

La solución es hacer un casting del resultado de esta llamada al tipo de control que sabes que se devuelve:

(this.byId("idIconTabBar") as IconTabBar).getSelectedKey()

Esto se hace comúnmente en el tutorial y ejemplos vinculados desde el punto de entrada central de UI5 & TypeScript (https://sap.github.io/ui5-typescript), así que supongo que tiene sentido mencionar esta página para aquellos que lleguen aquí y no estén al tanto de ella.

Saludos

Andreas

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?