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.
- (Que contiene TypeScript de origen) llamado ts (cualquier nombre que puedas usar).
- (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!
