Este post ha sido evaluado por nuestros expertos así se garantiza la exactitud de nuestro contenido.
Solución:
En cuanto al error en sí, let
se usa para declarar local variables que existen en ámbitos de bloque en lugar de ámbitos de función. También es más estricto que var
por lo que no puedes hacer cosas como esta:
if (condition)
let a = 1;
...
let a = 2;
También tenga en cuenta que case
cláusulas dentro switch
los bloques no crean sus propios ámbitos de bloque, por lo que no puede volver a declarar la misma variable local en varios case
s sin usar para crear un bloque cada uno.
En cuanto a la importación, probablemente reciba este error porque TypeScript no reconoce sus archivos como módulos reales, y aparentemente las definiciones a nivel de modelo terminan siendo definiciones globales para él.
Intente importar un módulo externo de la manera estándar ES6, que no contiene una asignación explícita, y debería hacer que TypeScript reconozca sus archivos correctamente como módulos:
import * as co from "./co"
Esto todavía resultará en un error de compilación si tiene algo llamado co
ya, como era de esperar. Por ejemplo, esto va a ser un error:
import * as co from "./co"; // Error: import definition conflicts with local definition
let co = 1;
Si está recibiendo un error “no se puede encontrar el módulo co”…
TypeScript está ejecutando una verificación de tipo completa en los módulos, por lo que si no tiene definiciones de TS para el módulo que está tratando de importar (por ejemplo, porque es un módulo JS sin archivos de definición), puede declarar tu módulo en un .d.ts
archivo de definición que no contiene exportaciones a nivel de módulo:
declare module "co"
declare var co: any;
export = co;
La mejor explicación que pude obtener es de la publicación de Tamas Piro.
TLDR; TypeScript utiliza los tipos DOM para el entorno de ejecución global. En su caso, hay una propiedad ‘co’ en el objeto de ventana global.
Para resolver esto:
- Cambiar el nombre de la variable, o
- Usa módulos de TypeScript y agrega una exportación vacía:
export ;
o
- Configure las opciones de su compilador al no agregar tipos de DOM:
Edite tsconfig.json en el directorio del proyecto TypeScript.
"compilerOptions":
"lib": ["es6"]
Recibí este error similar al compilar mi aplicación Node.JS Typescript:
node_modules/@types/node/index.d.ts:83:15 - error TS2451: Cannot redeclare block-scoped variable 'custom'.
La solución fue retirar este:
"files": [
"./node_modules/@types/node/index.d.ts"
]
y para reemplazarlo con esto:
"compilerOptions":
"types": ["node"]
Si estás de acuerdo, tienes el poder dejar un escrito acerca de qué le añadirías a este artículo.