Errores de tipoScript "Expresión esperada" a pesar de @ts-ignore en líneas con Google Apps script de impresión de fuerza

Estoy escribiendo código para un módulo Script de Google Apps usando VSCode, que de otro modo funciona bien en la comprobación de la sintaxis y así sucesivamente.

El único problema es que esto produce 5 errores de TS, a pesar de @ts-ignore:

    // @ts-ignore
    const { a, b } = != JSON.stringify(my_incoming_template_data) ?;

Es el !?> that it's complaining about. Those demarcate Google Apps Script force-printing scriptlets. *

Lo he intentado. este trabajo específicos @ts-ignore pero aparentemente no lo suficientemente específico (para la impresión de la fuerza scriptlets.) No deseo desactivar el TS para todo el archivo con @ts-nocheck porque es útil para TS ayudar con el resto del archivo.

¿Cómo puedo obligar al TS a escuchar el @ts-ignore ¿Comandancia? (¿O soporte scripts de impresión de fuerza?)

* Antes de señalarlo:)...en mi caso, yo do Necesito usar porque estoy generando código fuente HTML destinado a ser visto por el usuario del script. (Me doy cuenta de que este es un caso inusual; sin embargo, es lo que se necesita.)

Pregunta hecha hace 3 años, 4 meses, 7 días - Por binarybrainiac


2 Respuestas:

  • El problema que estás experimentando se debe a que el error que estás intentando ignorar con @ts-ignore no es un error de TypeScript per se, sino una marca especial utilizada en Google Apps Script para imprimir scriptlets de forma forzada. Como mencionas, != y ?> son caracteres específicos de Google Apps Script que no son reconocidos por TypeScript.

    Una forma de resolver esto sin desactivar por completo TypeScript en el archivo es envolver el código problemático dentro de un bloque de comentarios específico para TypeScript de esta manera:

    typescript
    // @ts-ignore
    // @ts-nocheck
    // @ts-expect-error
    // @ts-expect-error + ErrorName
    
    / eslint-disable /
    / eslint-enable /
    / eslint-disable @typescript-eslint/no-explicit-any /
    / eslint-enable @typescript-eslint/no-explicit-any /
    
    / cSpell:ignore XXX /
    / cSpell:disable /
    / cSpell:enable /
    

    En tu caso, podrías intentar hacer lo siguiente:

    typescript
    // @ts-ignore
    // @ts-nocheck
    // @ts-expect-error
    
    // @ts-ignore
    const { a, b } = != JSON.stringify(my_incoming_template_data) ?;
    

    Esto le indicará a TypeScript que ignore específicamente la expresión != JSON.stringify(my_incoming_template_data) ?;.

    Es importante recordar que el uso excesivo de @ts-ignore puede conducir a la supresión de errores legítimos en tu código, por lo que es recomendable utilizarlo con moderación y tratar de encontrar alternativas si es posible.

    Respondida el Dec 18, 2020 a las 10:50 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Solución:

    Para suprimir los errores de TypeScript específicos relacionados con los scriptlets de impresión de fuerza, puedes utilizar la siguiente anotación de tipo:

    
    // @ts-expect-error
    

    Esta anotación indica al compilador de TypeScript que espere un error en la línea siguiente, suprimiendo así el error de "Expresión esperada".

    Ejemplo modificado:

    
    // @ts-expect-error
    const { a, b } = != JSON.stringify(my_incoming_template_data) ?;
    

    Explicación:

    La anotación @ts-expect-error se utiliza para indicar al compilador que es consciente de que la línea siguiente puede contener un error, pero que no desea que se emita un error. En este caso, estás indicando que eres consciente de que la sintaxis del scriptlet de impresión de fuerza puede no ser válida según las reglas de TypeScript, pero que quieres que el código se ejecute de todos modos.

    Ten en cuenta que esta anotación solo suprime el error específico que has anotado. Si hay otros errores en la línea, seguirán apareciendo.

    Respondida el Dec 18, 2020 a las 10:55 - por Gemini

    Votos positivos: 0 | Votos negativos: 0