222 votes

Les "types" js ne peuvent être utilisés que dans un fichier .ts - Le code Visual Studio utilisant @ ts-check

Je commence à utiliser la Machine dans un Nœud de projet, je travaille sur de Code de Visual Studio. J'ai voulu suivre le "opt-in" de la stratégie, similaire à l'Écoulement. Donc j'ai mis // @ts-check au dessus de mes .js le fichier dans l'espoir de permettre à TS pour ce fichier. En fin de compte, je veux la même expérience de "peluchage" en tant que Flux, donc j'ai installé le plugin TSLint j'ai donc pu voir Intellisense avertissements/erreurs.

Mais avec mon fichier qui ressemble à:

// @ts-check

module.exports = {
  someMethod: (param: string): string => {
    return param;
  },
};

et mon tsconfig.json le fichier à la recherche comme...

{
  "compilerOptions": {
      "target": "es2016",
      "module": "commonjs",
      "allowJs": true
  }
}

J'obtiens cette erreur: [js] 'types' can only be used in a .ts file. comme indiqué ci-dessous dans l'image.

error from vscode for ts

J'ai vu cette question , qui a recommandé de désactiver javascript pour la validation dans vscode mais alors que ne pas me montrer tout Tapuscrit Intellisense info.

J'ai essayé de réglage tslint.jsEnable de true dans mon vscode les paramètres comme indiqué dans le TSLint extension de docs, mais pas de chance là-bas.

Quelle est la bonne configuration pour utiliser .js des fichiers avec des caractères d'imprimerie et Intellisense donc je sais ce que les erreurs dans mon code avant de m'exécuter n'importe quel TS commandes?

348voto

Idan Dagan Points 1230

Je suis l'aide de @flux avec vscode mais eu le même problème.

Je l'ai résolu avec cette procédure:

  1. installer l'extension des Flux de Support de la Langue
  2. désactiver le haut-Tapuscrit de l'extension:

Comment faire pour désactiver intégré à la Machine:

  1. aller aux extensions onglet
  2. recherche pour @builtin Tapuscrit et JavaScript Langage De Fonctionnalités
  3. cliquez sur Désactiver

245voto

Adeel Imran Points 2531

Utilisez "javascript.validate.enable": false dans vos paramètres de code VS. Cela ne désactive pas ESLINT. J'utilise les deux ESLINT & Flow. Il suffit de suivre les instructions Flow For Vs Code Setup

Ajout de cette ligne dans settings.json. Aide "javascript.validate.enable": false

9voto

Kenny Hammerlund Points 208

Pour quiconque atterrit ici et que toutes les autres solutions ne fonctionnent pas, essayez-le. J'utilise typescript + react et mon problème était que j'associais les fichiers dans vscode en tant que javascriptreact non typescriptreact donc vérifiez vos paramètres pour les entrées suivantes.

    "files.associations": {
    "*.tsx": "typescriptreact",
    "*.ts": "typescriptreact"
  },
 

2voto

EdSF Points 4145

Vous devez utiliser un .ts le fichier - par exemple, test.ts pour obtenir la copie dactylographiée de la validation, l'intellisense typing de vars, des types de retour, ainsi que "tapé" vérification des erreurs (par exemple, le passage d'un string pour une méthode qui attend un number param erreur de sortie).

Il sera transpiled dans (standard) .js par tsc.


Mise à jour (11/2018):

Clarification nécessaire basé sur les votes, commentaires et autres réponses.

types

  • Oui, vous pouvez le faire type signant VS Code en .js fichiers avec l' @ts-check - comme indiqué dans l'animation

  • Ce que j'ai à l'origine, faisait référence pour Tapuscrit types est quelque chose comme cela, en .ts ce qui n'est pas tout à fait la même chose:

    hello-world.ts

    function hello(str: string): string {
      return 1;
    }
    
    function foo(str:string):void{
       console.log(str);
    }
    

    Ce ne compilera pas. Error: Type "1" is not assignable to String

  • si vous avez essayé cette syntaxe dans un Javascript hello-world.js le fichier:

    //@ts-check
    
    function hello(str: string): string {
      return 1;
    }
    
    function foo(str:string):void{
       console.log(str);
    }
    

    Le message d'erreur référencé par l'OP est indiqué: [js] 'types' can only be used in a .ts file

Si il y a quelque chose que j'ai manqué qui couvre ce ainsi que les OP du contexte, s'il vous plaît ajouter. Nous allons tous apprendre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X