react - Advertencia de decoradores experimentales en la compilación de TypeScript
experimentaldecorators react (23)
- Abra VScode.
- Presione ctrl + coma
-
Siga las instrucciones en la
captura de pantalla
- Buscar sobre decoradores experimentales
- Editarlo
yo tengo
El soporte experimental para decoradores es una característica que está sujeta a cambios en una versión futura. Establezca la opción ''experimentalDecorators'' `para eliminar esta advertencia.
Incluso mi compilerOptions en tsconfig.json tiene configuraciones:
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
Lo extraño es que algunas clases aleatorias que usan decoradores no muestran esa advertencia pero sí descansan en el mismo proyecto.
¿Qué podría causar tal comportamiento del compilador TypeScript?
Abra el archivo
settings.json
en la siguiente ubicación
<project_folder>/.vscode/settings.json
o puede abrir el archivo desde el menú como se menciona a continuación
VSCode -> File -> Preferences -> Workspace Settings
Luego agregue las siguientes líneas en el archivo
settings.json
{
"typescript.tsdk": "node_modules/typescript/lib",
"enable_typescript_language_service": false
}
Eso es todo. No verá ninguna advertencia / error con respecto a '' experimentalDecorators ''
Abra la carpeta completa del proyecto en lugar de nombre-proyecto / src
tsconfig.json está fuera de la carpeta src
Agregué esta opción a tsconfig.json,
"baseUrl": "front-end"
Reemplace front-end con el nombre de su proyecto angular-cli.
Agregue las siguientes líneas en tsconfig.json y reinicie VS Code.
{
"compilerOptions": {
"experimentalDecorators": true,
"target": "es5",
"allowJs": true
}
}
Aunque VS Code es un gran editor para proyectos TypeScript, necesita una patada de vez en cuando.
A menudo, sin previo aviso, ciertos archivos hacen que se asuste y se queje.
En general, la solución parece ser guardar y cerrar todos los archivos abiertos, luego abrir
tsconfig.json
.
Después de eso, debería poder volver a abrir el archivo ofensivo sin error.
Si no funciona, haga espuma, enjuague y repita.
Si su
tsconfig.json
especifica sus archivos fuente utilizando la matriz de
files
, IntelliSense solo funcionará correctamente si se hace referencia al archivo en cuestión de modo que VS Code pueda encontrarlo atravesando el árbol de archivos de entrada.
Editar: El comando ''recargar ventana'' (agregado hace años) debería resolver este problema de una vez por todas.
Corregí la advertencia eliminando "baseUrl": "", del archivo tsconfig.json
En aras de la claridad y la estupidez.
1) Abra .vscode / settings.json.
2) Agregue "typescript.tsdk": "node_modules / typescript / lib" en él.
3) Guárdalo.
4) Reinicie Visual Studio Code.
Enfrenté el mismo problema al crear un servicio inyectable en Angular 2. Tengo todas las cosas en orden en tsconfig.json. Todavía recibo este error en la línea ColorsImmutable.
@Injectable()
export class ColorsImmutable {
Y la solución fue registrar el Servicio a nivel de módulo o Nivel de componente utilizando la matriz de proveedores.
providers:[ColorsImmutable ],
Esta respuesta está destinada a personas que usan un proyecto Javascript y no uno mecanografiado . En lugar de un archivo tsconfig.json , puede usar un archivo jsconfig.json .
En el caso particular de que los decoradores le avisen, debe escribir dentro del archivo:
{
"compilerOptions": {
"experimentalDecorators": true
}
}
Para los comportamientos con errores solicitados, siempre es mejor especificar la "inclusión" en el archivo de configuración y reiniciar el editor. P.ej
{
"compilerOptions": {
"target": "ES6",
"experimentalDecorators": true
},
"include": [
"app/**/*"
],
"exclude": [
"node_modules"
]
}
Este error también se produce cuando elige la carpeta "src" para su carpeta de espacio de trabajo.
Cuando se elige la carpeta raíz, la carpeta donde se encuentran "src", "node_modules", el error desaparece
No para difamar el punto, pero asegúrese de agregar lo siguiente a
- Configuración del espacio de trabajo, no Configuración del usuario
en Archivo >> Preferencias >> Configuración
"javascript.implicitProjectConfig.experimentalDecorators": verdadero
Esto solucionó el problema para mí, e intenté algunas sugerencias que encontré aquí y en otros lugares.
Puede encontrarse con este problema si abre un archivo TS que existe fuera del proyecto. Por ejemplo, estoy usando lerna y tenía un archivo abierto desde otro paquete. Aunque ese otro paquete tenía su propio tsconfig con decoradores experimentales, VsCode no lo respeta.
Recientemente tuve este problema en Visual Studio 2017; resultó que fue causado por una "característica" de VS, ignorando tsconfig.json cuando la acción de compilación no está configurada en Contenido .
Por lo tanto, cambiar la acción Construir a Contenido y volver a cargar la solución resolvió el problema.
Si está usando cli para compilar archivos * .ts, puede configurar experimentalDecorators usando el siguiente comando:
tsc filename.ts --experimentalDecorators "true"
Si estás trabajando en Visual Studio. Puedes probar esta solución
- Descarga tu proyecto desde Visual Studio
- Vaya al directorio de inicio de su proyecto y abra el archivo "csproj".
-
Agregue TypeScriptExperimentalDecorators a esta sección como se muestra en la imagen
- Vuelva a cargar el proyecto en Visual Studio.
Ver más detalles en this ubicación.
También puedes probar con
ng build
.
Acabo de reconstruir la aplicación y ahora no está cumpliendo.
Verifique que haya abierto en su Código VS la carpeta de todo el proyecto y no solo la carpeta src, porque si abre solo el src, entonces el archivo ts.config.json (ubicado en la carpeta del proyecto) no estará dentro del alcance, y VS no reconocerá los parámetros experimentales de los decoradores.
En mi caso, esto solucionó todos los problemas relacionados con este problema.
dentro de su proyecto, cree el archivo tsconfig.json, luego agregue estas líneas
{
"compilerOptions": {
"experimentalDecorators": true,
"allowJs": true
}
}
tengo que agregar
.vscode/settings.json
a mi
.vscode/settings.json
:
"typescript.tsdk": "node_modules/typescript/lib"
"javascript.implicitProjectConfig.experimentalDecorators": true
Resolverá este problema.