Creé una función para obtener el último elemento secundario usando TypeScript.
Si uso normal if/else mecanografiado no genera ningún error.
function lastChildElement(element: HTMLElement) { let lastChild = element.lastChild while (lastChild && lastChild.nodeType != 1) { if (lastChild.previousSibling) { lastChild = lastChild.previousSibling } else { break } } return lastChild }pero cuando se usa expresión ternaria/condicional
function lastChildElement(element: HTMLElement) { let lastChild = element.lastChild while (lastChild && lastChild.nodeType != 1) { lastChild.previousSibling ? lastChild = lastChild.previousSibling : break } return lastChild } texto mecanografiado subrayando la palabra clave break y elevando la Expression expected.
El operador condicional se evalúa como un valor . Es decir, si tiene
someExpression ? someOtherExpression : yetAnotherExpression Todo se evaluará como someOtherExpression o yetAnotherExpression .
Pero break no es un valor, no es una expresión, es una declaración que no puede evaluarse como nada, por lo que no está permitido en el contexto en el que se espera una expresión.
Por razones similares, no puedes hacer:
while (someCondition) { const something = break; // ...que simplemente no tiene sentido.
Use if / else , para que pueda break como una declaración independiente si es necesario.
Dicho esto, una mejor alternativa para iterar a través de todos los elementos secundarios es seleccionar directamente el último elemento secundario.
const lastChildElement = (element: HTMLElement) => element.lastElementChild;No se necesitan bucles.