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.
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
- Open Zed's Extensions page.
- Search for
TypeScript Language Serverand install the extension.
Enable typescript-ls in your Zed settings:
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",
"...",
],
},
},
}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
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.
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.
{ "languages": { "TypeScript": { "language_servers": [ "typescript-ls", "!vtsls", "!typescript-language-server", "...", ], }, "TSX": { "language_servers": [ "typescript-ls", "!vtsls", "!typescript-language-server", "...", ], }, }, }