Explain Codes LogoExplain Codes Logo

Error: 'types' can only be used in a .ts file - Visual Studio Code using @ts-check

javascript
type-checking
vs-code
javascript-development
Alex KataevbyAlex Kataev·Oct 19, 2024
TLDR

To combat the 'types' can only be used in a .ts file error in JavaScript, you can use @ts-check and JSDoc comments rather than TypeScript syntax. Here's a fast solution:

// @ts-check /** @type {string} */ let myString; // Declare '@type {string}' myString = 'Hello'; // We're good to go! // myString = 42; // Hold up! VS Code shows a type error.

This quick fix harnesses VS Code's built-in type checking in JS files sans TypeScript.

Making the most of type checking in Visual Studio Code

Type checking in JavaScript using @ts-check, when properly setup, can significantly improve your coding experience in Visual Studio Code (VS Code).

Setting up VS Code for type checking

To achieve a seamless workflow, here are some key adjustments to make in your VS Code settings:

  • Deactivate Default Features: From your Extensions panel, deactivate built-in "TypeScript and JavaScript Language Features", as these can conflict with your custom configurations.
  • Configure File Associations: For React developers, navigate to your settings, and set file associations for *.tsx and *.ts files as typescriptreact to ensure they're correctly recognized.
  • Adjust settings.json: Update your settings.json file with "javascript.validate.enable": false and "js/ts.implicitProjectConfig.checkJs": true to turn off default JS validation and enable type checking on non-project JS files.
  • Prioritize Your Extensions: Sorting the key extensions, such as ESLint and TSLint plugins, to the top of your extensions list can prevent conflicts and streamline your workflow.
  • Install Recommended Extensions: Consider installing the Flow Language Support extension if you're using Flow, or ensure ESLint and TSLint are properly setup for additional IntelliSense support.

Implementing comprehensive error checking

To use VS Code's full potential for type checking and error reporting, consider these extra steps:

  • Prioritize ESLint or TSLint Plugins: Making sure these plugins are correctly configured can provide a more robust error detection mechanism.
  • Integrate Flow: Follow the "Flow For VS Code Setup" instructions for seamless integration if Flow is your type checker of choice.

After implementing these configurations, you can maximize VS Code's efficiency and tailor it to meet your JavaScript development needs.

Optimizing productivity with type checking

The power of this feature in enhancing productivity cannot be overstated. Here are some key situations where type checking in JavaScript with @ts-check can be a vital tool.

Averting common mishaps with configurations

Avoid problematic scenarios by taking heed:

  • Misconfigured Language Settings: If VS Code misbehaves and doesn't recognize your files correctly, you may need to adjust your language settings and file associations.
  • Intricate Conflicts: Some tricky combinations of extensions may trigger unexpected behavior. If you're still experiencing issues after disabling built-in extensions, consider looking for other potentially conflicting extensions.
  • Stubborn Issues: Even with correct configurations, unexpected errors can occur. If that happens, consider visiting the official VS Code JavaScript programming guide or completely resetting your setup.

Enhancing type checking capabilities

To explore the depths of type checking in your JavaScript code, you can:

  • Utilize More JSDoc Annotations: Using a wider array of JSDoc annotations can help you cover more complex type scenarios.
  • Harvest TypeScript Features: You can use JSDoc to incorporate TypeScript features into your .js files, leveraging advanced IntelliSense without fully converting to TypeScript.

Adhere to these tips and you'll find that efficient coding and maintaining high-quality code can coexist harmoniously in JavaScript land.