Getting Started
Languages
Javascript/Typescript/React

Javascript/Typescript/React

Language Server

:LspInstall tsserver

Formatter

:MasonInstall prettier

Inlay Hints

It's experimental so there may be bugs.

:LspSettings tsserver

tsserver.json
{
  "javascript.inlayHints.includeInlayEnumMemberValueHints": true,
  "javascript.inlayHints.includeInlayFunctionLikeReturnTypeHints": true,
  "javascript.inlayHints.includeInlayFunctionParameterTypeHints": true,
  "javascript.inlayHints.includeInlayParameterNameHints": "all",
  "javascript.inlayHints.includeInlayParameterNameHintsWhenArgumentMatchesName": true,
  "javascript.inlayHints.includeInlayPropertyDeclarationTypeHints": true,
  "javascript.inlayHints.includeInlayVariableTypeHints": true,
 
  "typescript.inlayHints.includeInlayEnumMemberValueHints": true,
  "typescript.inlayHints.includeInlayFunctionLikeReturnTypeHints": true,
  "typescript.inlayHints.includeInlayFunctionParameterTypeHints": true,
  "typescript.inlayHints.includeInlayParameterNameHints": "all",
  "typescript.inlayHints.includeInlayParameterNameHintsWhenArgumentMatchesName": true,
  "typescript.inlayHints.includeInlayPropertyDeclarationTypeHints": true,
  "typescript.inlayHints.includeInlayVariableTypeHints": true
}

If mason is not supported on your platform

Setup LSP

go to: ~/.config/nvim/lua/userconfig/lsp.lua

and add these lines

lsp.lua
require('lspconfig')['tsserver'].setup {
  cmd = { "typescript-language-server", "--stdio" },
  filetypes = { "javascript", "javascriptreact", "javascript.jsx", "typescript", "typescriptreact", "typescript.tsx" },
  init_options = {
    hostInfo = "neovim"
  },
  settings = {
    javascript = {
      inlayHints = {
        includeInlayEnumMemberValueHints = true,
        includeInlayFunctionLikeReturnTypeHints = true,
        includeInlayFunctionParameterTypeHints = true,
        includeInlayParameterNameHints = "all", -- 'none' | 'literals' | 'all';
        includeInlayParameterNameHintsWhenArgumentMatchesName = true,
        includeInlayPropertyDeclarationTypeHints = true,
        includeInlayVariableTypeHints = true,
      },
    },
    typescript = {
      inlayHints = {
        includeInlayEnumMemberValueHints = true,
        includeInlayFunctionLikeReturnTypeHints = true,
        includeInlayFunctionParameterTypeHints = true,
        includeInlayParameterNameHints = "all", -- 'none' | 'literals' | 'all';
        includeInlayParameterNameHintsWhenArgumentMatchesName = true,
        includeInlayPropertyDeclarationTypeHints = true,
        includeInlayVariableTypeHints = true,
      },
    },
  },
  single_file_support = true,
  root_dir = require("lspconfig").util.root_pattern("package.json", "tsconfig.json", "jsconfig.json", ".git"),
  on_attach = on_attach
}

Formatter

If lsp does not provide a formatter, you can use the following command: :Neoformat click here (opens in a new tab) for more information