TypeScript Language Server
TypeScript v7's native compiler and language server.
How to install
With Forge Super installed, the button above opens the app on this extension, where you press Install. Nothing is installed until you do.
You can also open the Extensions panel in the app and search for TypeScript Language Server. The extension's id is tsgo.
Don't have Forge Super yet? Download it here.
README
From the extension's repository, written by its authors and not by Mentenaz. See the source.
tsgo: Native TypeScript Compiler Integration for Zed
This extension integrates TypeScript v7's native Go-based compiler and language server into the Zed editor, delivering enhanced performance and efficiency for TypeScript development.
🚀 Why the native compiler?
With TypeScript 7, Microsoft shipped the TypeScript compiler as a native version written in Go, with significant performance improvements:
- Faster Compilation: Achieves up to 10x speed improvements in large projects.
- Reduced Memory Usage: Optimized memory handling in native execution.
- Improved Editor Performance: Faster IntelliSense and language services.
- Scalability: Better handling of large codebases.
Example Benchmarks:
- VS Code: 77.8s → 7.5s (10.4x speedup)
- Playwright: 11.1s → 1.1s (10.1x speedup)
- TypeORM: 17.5s → 1.3s (13.5x speedup)
Source: Microsoft Developer Blog
🛠 Installation
- Open Zed's Extensions page.
- Search for
TypeScript Language Serverand install the extension.
⚙️ Configuration
Basic Setup
Enable typescript-ls in your Zed settings:
{
"languages": {
"TypeScript": {
"language_servers": [
"typescript-ls",
"!vtsls",
"!typescript-language-server",
"...",
],
},
"TSX": {
"language_servers": [
"typescript-ls",
"!vtsls",
"!typescript-language-server",
"...",
],
},
},
}
You can also use typescript-ls in tandem with other language servers (e.g. typescript-language-server or vtsls). Zed will use typescript-ls for features it supports and fallback to the next language server in the list for unsupported features.
To do that with vtsls, use:
{
"languages": {
"TypeScript": {
"language_servers": [
"typescript-ls",
"vtsls",
"!typescript-language-server",
"...",
],
},
"TSX": {
"language_servers": [
"typescript-ls",
"vtsls",
"!typescript-language-server",
"...",
],
},
},
}
Advanced Configuration
Specifying a Package Version
By default, the extension installs and uses the latest version of the typescript npm package. To pin a specific version (must be >= 7.0.0, older versions have no native language server):
{
"lsp": {
"typescript-ls": {
"settings": {
"package_version": "7.0.2"
}
}
}
}
This is useful for:
- Ensuring consistent behavior across the project
- Testing specific versions
- Avoiding automatic updates that might introduce issues
Inlay Hints
The extension sets defaults to make typescript-ls send back inlay hints when Zed has inlay hints enabled. To show them, enable Zed's inlay_hints setting:
{
"inlay_hints": {
"enabled": true
}
}
You can override the default inlay hint settings in your Zed settings:
{
"lsp": {
"typescript-ls": {
"settings": {
"typescript": {
"inlayHints": {
"parameterNames": {
"enabled": "none"
},
"parameterTypes": {
"enabled": false
},
"variableTypes": {
"enabled": false
},
"propertyDeclarationTypes": {
"enabled": false
},
"functionLikeReturnTypes": {
"enabled": false
},
"enumMemberValues": {
"enabled": false
}
}
}
}
}
}
}
Use the same settings under javascript to override them for JavaScript.
Code Lens
The extension enables references and implementations code lenses by default. These show reference counts and implementation counts above functions, classes, and interfaces. To use them, enable Zed's code_lens setting:
{
"code_lens": "on"
}
You can override the default code lens settings in your Zed settings:
{
"lsp": {
"typescript-ls": {
"settings": {
"typescript": {
"implementationsCodeLens": {
"enabled": false
},
"referencesCodeLens": {
"enabled": false
}
}
}
}
}
}
Use the same settings under javascript to override them for JavaScript.