unused deprecation curly typescript jslint tslint

typescript - deprecation - ¿Por qué TSLint y JSLint reportan bloques vacíos?



tslint typescript (5)

De vez en cuando, obtengo errores de TSLint "el bloque está vacío". Esto sucede, por ejemplo, cuando paso una devolución de llamada no operativa a una función:

doSomething(() => {});

Por lo que leí, JSLint aparentemente hace lo mismo, pero no lo verifiqué.

Encuentro estos usos completamente válidos, así que traté de encontrar una razón por la que los bloques vacíos se consideran malos en absoluto. Pero lo único que puedo encontrar (por ejemplo, en esta respuesta ) son las instrucciones para agregar una return; para evitar el error. Esto no es lo que quiero hacer en cada devolución de llamada vacía.

¿Por qué TSLint informa sobre el bloque vacío como problema? ¿Hay alguna razón por la que no deba desactivar el cheque?


¿Por qué TSLint informa sobre el bloque vacío como problema?

Para evitar errores . Tal vez la función se olvidó de ser completada. Recommend () => undefined como noop.

Más

Si desea deshabilitarlo, simplemente agregue "no-empty": false, a su tslint.json (deshabilite globalmente) o deshabilítelo en línea usando un /* tslint:disable:no-empty */ comment.


Al igual que con todos los controles, tiene el juicio final sobre si le están ayudando o no. Puede desactivar esta comprobación TSLint utilizando una de las siguientes opciones.

Deshabilita la regla en tslint.json

//... "no-empty": false, //...

Deshabilita la regla en el archivo:

/* tslint:disable:no-empty */

Siempre puede volver a encenderlo si en el futuro encuentra un bloque vacío que le haya causado un problema.


Otra posible solución es utilizar

doSomething(() => { return })

Si bien esta no es exactamente la pregunta que se hizo, descubrí este enfoque al intentar resolver la siguiente línea:

export const generatorFn = function * (): IterableIterator<any> { }

Mi solución fue agregar una declaración de return como la anterior, ya que las funciones del generador no se pueden expresar como una función de flecha:

export const generatorFn = function * (): IterableIterator<any> { return }


Si cree que no desea utilizar la devolución de llamada en ciertos escenarios, puede modificar el código

desde

doSomething(() => {});

a

doSomething(() => void);

Sustituir () => {} por esto implica que no te importa esta devolución de llamada. y tipecasting explícito evitará implicaciones.

Buena suerte.


Una forma de suprimir el error y designar que el bloque vacío fue intencionalmente es deshabilitar la regla temporal:

// tslint:disable-next-line:no-empty doSomething(() => {});

O hazlo no vacío:

doSomething(() => {/**/});