web-dev-qa-db-ja.com

js 'types'は.tsファイルでのみ使用できます-@ ts-checkを使用したVisual Studio Code

Visual Studio Codeで作業しているNodeプロジェクトでTypeScriptを使用し始めています。 Flowと同様に、「オプトイン」戦略に従うことを望みました。したがって、// @ts-check.jsファイルの先頭に配置して、そのファイルのTSを有効にすることを期待しています。最終的に、Flowと同じ「リンティング」の経験が欲しいので、プラグイン TSLint をインストールしたので、Intellisenseの警告/エラーが表示されます。

しかし、私のファイルは次のようになります:

// @ts-check

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

そして私のtsconfig.jsonファイルは次のようになります...

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

このエラーが表示されます:[js] 'types' can only be used in a .ts file.以下の画像に示すとおり。

error from vscode for ts

私は この質問 を見ましたが、vscodeでjavascript検証を無効にすることを推奨しましたが、それは私には表示されませんanyTypeScript Intellisense情報。

TSLint拡張ドキュメントで述べたように、vscode設定でtslint.jsEnabletrueに設定しようとしましたが、運がありませんでした。

TypeScriptで.jsファイルを使用してIntellisenseを取得するための正しいセットアップとは何ですか。TSコマンドを実行する前にコードのエラーを把握できますか?

69
james

Vscodeで @ flow を使用していますが、同じ問題がありました。

私はこの手順でそれを解決しました:

  1. 拡張機能をインストールします フロー言語サポート
  2. 組み込みのTypeScript拡張機能を無効にします。

組み込みのTypeScriptを無効にする方法:

  1. extensionsタブに移動します
  2. @ builtin TypeScriptおよびJavaScript言語機能を検索します
  3. クリック無効
131
Idan Dagan

VS Code設定で"javascript.validate.enable": falseを使用します。ESLINTは無効になりません。私はESLINTとFlowの両方を使用します。単に指示に従ってください コード設定のフロー

この行をsettings.jsonに追加します。ヘルプ"javascript.validate.enable": false

47
Adeel Imran

.tsファイルを使用する必要があります-例test.tsはTypeScriptを取得します 検証、インテリセンス 変数のtyping、戻り値の型、および「型付き」エラーチェック(たとえば、string paramを予期するメソッドにnumberを渡すとエラーになります)。

(標準).jsvia tsc に変換されます。


更新(11/2018):

採決、非常に役立つコメント、その他の回答に基づいて明確化が必要です。

types

  • はい、アニメーションに示されているように、 .js を使用して、@ts-checkファイルのVS Codeでtypeチェックを実行できます。

  • 私が元々言及していたのは、TypeScripttypes.tsのこのようなもので、まったく同じものではありません。

    hello-world.ts

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

    これはコンパイルされません。 Error: Type "1" is not assignable to String

  • Javascripthello-world.jsファイルでこの構文を試した場合:

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

    OPが参照するエラーメッセージが表示されます:[js] 'types' can only be used in a .ts file

これとOPのコンテキストをカバーする私が見逃したものがあれば、追加してください。みんなで学びましょう。

1
EdSF