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