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


104

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

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

// @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.次の画像に示すように、このエラーが発生します。

TSのvscodeからのエラー

私が見たこの質問、私に示していないこと、その後vscode内のJavaScriptの検証を無効にすることをお勧めしますが、任意の活字体インテリセンス情報を。

TSLint拡張ドキュメントに記載されているように、vscode設定でに設定しようとtslint.jsEnabletrueましたが、うまくいきませんでした。

.jsTypeScriptでファイルを使用してIntellisenseを取得するための正しい設定は何ですか?TSコマンドを実行する前に、コードのエラーを確認できますか?


拡張子をtsに変更するとエラーになりますか?
イスラエル亜鉛

@ israel.zincが拡張子を変更して、.ts期待どおりにTSエラー/警告を表示します。これはうまくいくと思いますが、@ts-checkすべての拡張機能をそのままにして、オプトイン方法をもっと使用したいと思っていました.js
james


@ BuZZ-dEEそれはそうかもしれませんが、そこにある答えは問題を解決しませんでした。私は元の質問でこれについて述べました。
ジェームズ

回答:


203

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

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

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

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

  1. 行く拡張タブ
  2. @builtin TypeScriptおよびJavaScript言語機能を検索
  3. [ 無効にする ]をクリックします

5
受け入れられた答えは常に正しいとは限りません。React NativeとFlowを使用したVSCodeには.jsファイルに同じメッセージを表示するバグがあり、その場合は.tsに変更しないでください。
パシュテ

105
参考までに、この拡張機能を無効にすると、VSCodeを使用したJS開発の優れた点がすべて無効になります。代わりに、あなたは自分の設定をJSONファイルに以下を追加する必要があります: "javascript.validate.enable": false
heez

1
@heezがこれに影響を与えると述べたように、JavaScriptファイルへの参照、オートコンプリートなどを見つけてもJavaScript言語機能は無効になりません。
Ajitsen

2
有効な答えは@heezによって述べられました
Asim Olmez

1
@heez保存してくれてありがとう、見つけた。エラーはありません。ついにVisual Studioコードが使えるようになりました。
Anish Arya

93

"javascript.validate.enable": falseあなたのVSコード設定で使用してください、それはESLINTを無効にしません。ESLINTとFlowの両方を使用しています。Vs Code Setupのフローに従ってください。

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


4
これにより、typescriptを無効にする必要はありません。どちらも存在できます。最高のソリューション!
-Nirus、

2
ESLintを使用してJavascriptを検証している場合、この答えが最善の解決策です。詳細:code.visualstudio.com/docs/languages/…およびgithub.com/flowtype/flow-for-vscode#setup
Beau Smith

1
settings.jsonファイルはどこにありますか?
i18n

1
こんにちは@ i18n移動:コード->設定->設定->拡張機能->下にスクロールして、「edit in settings.json」を見つけます。実際にこれの下にあるものを見つけInclude Languages Enable Emmet abbreviations in languages that are not supported by default. Add a mapping here between the language and emmet supported language. E.g.: {"vue-html": "html", "javascript": "javascriptreact"}ます。settings.jsonで[編集]をクリックして、これを追加します"javascript.validate.enable": false
Fotis Tsakiris

最高の..私にとってはうまくいく
Betini O. Heleno

1

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

.js 経由でtsc(標準)に変換されます。


アップデート(2018年11月):

反対票、非常に役立つコメント、その他の回答に基づいて説明が必要です。

types

  • はい、あなたはtypeVS Codeを.jsファイルでチェックインすることができます@ts-check-アニメーションに示すように

  • 私が最初にTypescript について言及していたのtypesは、次のような.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

  • この構文をJavascript hello-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のコンテキストをカバーする見逃したものがある場合は、追加してください。みんなで学びましょう。


JSファイル内でTSのすべての機能を使用できることを示唆する記事をいくつか見つけました。ここのから1 スマッシングマガジンvscodeためのGitHubの問題設定を説明し、いくつかのvscodeのリリースノート
ジェームズ

@ jamez14私は試したことはありません/ 使用しない必要がありました.ts。IINM、サンプルはエラーチェックインテリセンスを示しています。あなたが持っている問題は、(静的)であるtype、あなたの変数をINGの、そしてリターンtypesにも-例えばfoo:stringbar:numberfubar:MyClassmyMethod(f:Array):voidanotherMethod():string
Hth

うん、あなたの評価は正しいようです。例をさらに見てみると、@ts-check属性を使用する場合、TSではなく単なるJSエラーチェックであることがわかります。非常に誤解を招く...
ジェームズ

-1

ここに着陸して他のすべての解決策がうまくいかなかった人は、これを試してみてください。typescript + reactを使用していますが、vscodeでファイルを関連付けてjavascriptreactいないtypescriptreactので、次のエントリの設定を確認してください。

   "files.associations": {
    "*.tsx": "typescriptreact",
    "*.ts": "typescriptreact"
  },
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.