Avvertenze per decoratori sperimentali nella compilazione TypeScript

io ho

Il supporto sperimentale per i decoratori è una funzionalità che è soggetta a modifiche in una versione futura. Impostare l’opzione ‘experimentalDecorators’ per rimuovere questo avviso.

anche il mio compilerOptions in tsconfig.json ha le impostazioni:

"emitDecoratorMetadata": true, "experimentalDecorators": true, 

Ciò che è strano è che alcune classi casuali che usano decoratori non mostrano quell’avvertimento ma lo fanno nello stesso progetto.

Cosa potrebbe causare un simile comportamento del compilatore TypeScript?

Sebbene VS Code sia un ottimo editor per i progetti TypeScript, ha bisogno di un calcio ogni tanto. Spesso, senza preavviso, alcuni file lo fanno impazzire e lamentarsi. Soprattutto la soluzione sembra essere quella di salvare e chiudere tutti i file aperti, quindi aprire tsconfig.json . Dopodiché dovresti essere in grado di riaprire il file incriminato senza errori. Se non funziona, schiuma, risciacquo e ripetere.

Se il tuo tsconfig.json specifica i suoi file sorgente usando l’array di files , IntelliSense funzionerà correttamente solo se il file in questione è referenziato in modo che VS Code possa trovarlo percorrendo la struttura del file di input.

Devo aggiungere quanto segue nel file settings.json di vscode per rimuovere l’avviso.

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode -> Preferenze -> Impostazioni

inserisci la descrizione dell'immagine qui

Questo errore si verifica anche quando si sceglie la cartella “src” per la cartella del workspace.

Quando viene scelta la cartella principale, cartella in cui si trovano “src”, “node_modules”, l’errore scompare

devo aggiungere typescript.tsdk al mio .vscode/settings.json :

 "typescript.tsdk": "node_modules/typescript/lib" 

all’interno del tuo progetto creare il file tsconfig.json, quindi aggiungere queste righe

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

Aprire il file settings.json nel seguente percorso /.vscode/settings.json

oppure puoi aprire il file dal menu come indicato di seguito

VSCode -> File -> Preferences -> Workspace Settings

Impostazioni di experimentalDecorators

Quindi aggiungere le seguenti righe nel file settings.json

 { "typescript.tsdk": "node_modules/typescript/lib", "enable_typescript_language_service": false } 

È tutto. Non vedrai alcun avviso / errore riguardo a ” experimentalDecorators

Questa risposta è pensata per le persone che utilizzano un progetto Javascript e non uno typescript . Invece di un file tsconfig.json puoi usare un file jsconfig.json .

Nel caso particolare di avvertire i decoratori, scrivere all’interno del file:

 { "compilerOptions": { "experimentalDecorators": true } } 

Per quanto riguarda i comportamenti vietati, è sempre meglio specificare l’inclusione nel file di configurazione e riavviare l’editor. Per esempio

 { "compilerOptions": { "target": "ES6", "experimentalDecorators": true }, "include": [ "app/**/*" ], "exclude": [ "node_modules" ] } 
 "javascript.implicitProjectConfig.experimentalDecorators": true 

Risolverà questo problema

Non per scherzare sul punto, ma assicurati di aggiungere il seguente a

  • Impostazioni dell’area di lavoro non Impostazioni utente

sotto File >> Preferenze >> Impostazioni

“javascript.implicitProjectConfig.experimentalDecorators”: vero

questo ha risolto il problema per me, e ho provato alcuni suggerimenti che ho trovato qui e in altri posti.

Per motivi di chiarezza e stupidità.

1) Apri .vscode / settings.json.

2) Aggiungi “typescript.tsdk”: “node_modules / typescript / lib” su di esso.

3) Salvalo.

4) Riavvia codice Visual Studio.

Aggiungere le seguenti righe in tsconfig.json e riavviare VS Code.

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

Ho corretto l’avviso rimuovendo “baseUrl”: “”, dal file tsconfig.json

Apri la cartella dell’intero progetto invece del nome progetto / src

tsconfig.json è fuori dalla cartella src

Se lavori in Visual Studio. Puoi provare questa correzione

  1. Scarica il tuo progetto da Visual Studio
  2. Vai alla directory home del tuo progetto e apri il file “csproj”.
  3. Aggiungi TypeScriptExperimentalDecorators a questa sezione come mostrato nell’immagine

    inserisci la descrizione dell'immagine qui

    1. Ricarica il progetto in Visual Studio.

vedere più dettagli in questa posizione.

  1. Apri VScode.
  2. Premere ctrl + virgola
  3. Segui le indicazioni nella schermata
    1. Cerca su experimentalDecorators
    2. Modificalo

Potresti incontrare questo problema se apri un file TS che esiste al di fuori del progetto. Per esempio, sto usando lerna e ho un file aperto da un altro pacchetto. Anche se quell’altro pacchetto aveva il proprio tsconfig con decoratori sperimentali, VsCode non lo onorava.

Ho affrontato lo stesso problema durante la creazione di un servizio iniettabile in Angular 2. Ho tutte le cose a posto in tsconfig.json. Ancora mi stava ottenendo questo errore alla riga ColorsImmutable.

 @Injectable() export class ColorsImmutable { 

E la correzione era di registrare il servizio a livello di modulo o di livello di componente utilizzando l’array di provider.

 providers:[ColorsImmutable ], 

Ho aggiunto questa opzione a tsconfig.json, "baseUrl": "front-end" Sostituisci front-end con il nome del tuo progetto angular-cli.

Se si utilizza cli per compilare i file * .ts, è ansible impostare experimentalDecorators utilizzando il seguente comando:

  tsc filename.ts --experimentalDecorators "true" 

Si prega di verificare nel proprio VS Code la cartella dell’intero progetto e non solo la cartella src, perché se si apre solo src, il file ts.config.json (che si trova nella cartella del progetto) non sarà in ambito, e VS non riconoscerà i parametri dei decoratori sperimentali.

Nel mio caso questo risolve tutti i problemi relativi a questo problema.

Recentemente ho avuto questo problema sotto Visual Studio 2017 – si è scoperto che era causato da una “funzionalità” di VS – ignorando tsconfig.json quando l’azione Build non è impostata su Content .

Pertanto, la modifica dell’azione di creazione sul contenuto e il caricamento della soluzione hanno risolto il problema.