Búsqueda de sitios web

typescript - ¿La propiedad 'log10' no existe en el tipo 'Math'?


Soy principiante en typescript.

cuando uso Math.log10, me da esta advertencia.

¿Cómo puedo resolverlo?

Y, cuando uso ts-node math.ts, me da un error:

TSError: ⨯ Unable to compile TypeScript
src/modules/math2.ts (6,15): Property 'log10' does not exist on type 'Math'. (2339)

Aquí está mi tsconfig.json:

{
  "compilerOptions": {
    "experimentalDecorators": true,
    "allowJs": true,
    "target": "es5"
  }
}

Respuesta #1

Math.log10 es una extensión de ECMAScript2015 (aka es6); por eso babel se queja cuando intentas transpilarlo a es5. Para aquellos que enfrentaron el mismo problema: por supuesto, pueden hacer lo que hizo el OP y cambiar el objetivo a es6. Pero eso enmascarará algunos otros problemas con es5, como que Safari 9 no soporta Object.assign. Si no puedes cambiar el objetivo a es6, la forma preferida es agregar una definición, por ejemplo:

  • es6.d.ts

    declare interface Math {
        log10(x: number): number;
    }
    

Esto funcionará, porque los navegadores sí soportan el método.

Respuesta #2

Math.log10 es una utilidad incluida en ES6. Por lo tanto, necesitas actualizar el objetivo a ES6 o posterior. Asegúrate de que tu tsconfig.json contenga el valor indicado.

{
  "target": "ES2016",
  "module": "ES6",
}

Este problema puede ocurrir cuando estás compilando un solo archivo. Entonces, para evitar esto, sigue los pasos indicados.
Crea 2 directorios en el nivel raíz.

  1. (Que contiene TypeScript de origen) llamado ts (cualquier nombre que puedas usar).
  2. (Qué tienda de JavaScript compilado) llamada js (cualquier nombre que puedas usar).

Y agrega las siguientes configuraciones en tsconfig.json

{
  "rootDir" : "./ts",
  "outDir" : "./js"
}

¡Aquí hemos terminado!
escribe "tsc" en la terminal.

¡Espero que esto pueda ser útil para ti!

Artículos relacionados