web-dev-qa-db-fra.com

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

Je commence à utiliser TypeScript dans un projet Node sur lequel je travaille dans Visual Studio Code. Je voulais suivre la stratégie "opt-in", similaire à Flow. Par conséquent, je mets // @ts-check en haut de mon fichier .js dans l'espoir d'activer TS pour ce fichier. En fin de compte, je veux la même expérience de "linting" que Flow, donc j’ai installé le plugin TSLint pour pouvoir voir les avertissements/erreurs d’Intellisense.

Mais avec mon fichier ressemblant à:

// @ts-check

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

et mon fichier tsconfig.json ressemblant à ...

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

Je reçois 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 la validation javascript dans vscode mais cela ne me montre pas les informations TypeScript Intellisense.

J'ai essayé de définir tslint.jsEnable sur true dans les paramètres de mon code vscode, comme indiqué dans la documentation relative à l'extension TSLint, mais sans succès.

Quelle est la configuration correcte pour utiliser les fichiers .js avec TypeScript et obtenir Intellisense afin que je sache quelles sont les erreurs dans mon code avant d'exécuter des commandes TS?

69
james

J'utilise @ flow avec vscode mais j'ai le même problème.

Je l'ai résolu avec ces étapes:

  1. installer l'extension prise en charge du langage de flux
  2. désactiver l'extension TypeScript intégrée:

Comment désactiver le typeScript intégré:

  1. aller à l'onglet extensions
  2. rechercher @ fonctionnalités intégrées du langage TypScript et JavaScript
  3. cliquez sur Désactiver
131
Idan Dagan

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

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

47
Adeel Imran

Vous devez utiliser un fichier _.ts_ - par exemple. _test.ts_ pour obtenir TypeScript validation, intellisense typing of vars, types de retour, ainsi que la vérification d'erreur "typée" (par exemple, passer un string à une méthode qui s'attend à ce qu'un paramètre number s'éclaire).

Il sera transpilé en (standard) _.js_ via tsc .


Mise à jour (11/2018):

Une clarification est nécessaire en fonction des votes négatifs, des commentaires très utiles et d'autres réponses.

types

  • Oui, vous pouvez effectuer type l'enregistrement du code de VS dans des fichiers _.js_ avec @ts-check - comme indiqué dans l'animation.

  • Ce à quoi je faisais référence à l'origine pour TypeScript types ressemble à ceci dans _.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);
    }
    _

    Cela ne compilera pas. _Error: Type "1" is not assignable to String_

  • si vous avez essayé cette syntaxe dans un fichier Javascript _hello-world.js_:

    _//@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 OP est affiché: _[js] 'types' can only be used in a .ts file_

S'il y a quelque chose qui m'a échappé et qui couvre à la fois ce contexte et le contexte du PO, veuillez l'ajouter. Apprenons tous.

1
EdSF