js 'types' can only be used in a .ts file - Visual Studio Code using @ts-check
I'm using flow with vscode but had the same problem. I solved it with these steps:
Install the extension Flow Language Support
Disable the built-in TypeScript extension:
- Go to Extensions tab
- Search for @builtin TypeScript and JavaScript Language Features
- Click on Disable
Use "javascript.validate.enable": false
in your VS Code settings, It doesn't disable ESLINT. I use both ESLINT & Flow. Simply follow the instructions Flow For Vs Code Setup
Adding this line in settings.json. Helps
"javascript.validate.enable": false
You must use a .ts
file - e.g. test.ts
to get Typescript validation, intellisense typing
of vars, return types, as well as "typed" error checking (e.g. passing a string
to a method that expects an number
param will error out).
It will be transpiled into (standard) .js
via tsc
.
Update (11/2018):
Clarification needed based on down-votes, very helpful comments and other answers.
types
Yes, you can do
type
checking in VS Code in.js
files with@ts-check
- as shown in the animationWhat I originally was referring to for Typescript
types
is something like this in.ts
which isn't quite the same thing:hello-world.ts
function hello(str: string): string { return 1; } function foo(str:string):void{ console.log(str); }
This will not compile.
Error: Type "1" is not assignable to String
if you tried this syntax in a Javascript
hello-world.js
file://@ts-check function hello(str: string): string { return 1; } function foo(str:string):void{ console.log(str); }
The error message referenced by OP is shown:
[js] 'types' can only be used in a .ts file
If there's something I missed that covers this as well as the OP's context, please add. Let's all learn.