TypeScript: The sample given at for `Writing-a-Language-Service-Plugin` doesn't compile.
Bug Report
🔎 Search Terms
plugin language-service compile
- I was unable to test this on prior versions because there are no earlier versions of the documentation_____
💻 Code
This is copied from the guide at https://github.com/microsoft/TypeScript/wiki/Writing-a-Language-Service-Plugin
const ts = modules.typescript;
function create(info: ts.server.PluginCreateInfo) {
// Set up decorator
const proxy: ts.LanguageService = Object.create(null);
for (let k of Object.keys(info.languageService) as Array<
keyof ts.LanguageService
>) {
const x = info.languageService[k];
proxy[k] = (...args: Array<{}>) => x.apply(info.languageService, args);
}
return proxy;
}
return { create };
}
🙁 Actual behavior
I am entering the code sample from https://github.com/microsoft/TypeScript/wiki/Writing-a-Language-Service-Plugin and I am getting compile errors while setting up the decorator:

🙂 Expected behavior
I was hoping I could copy/paste the sample and it would work.
NOTE: It’s also possible the documentation around this just needs to be clearer. How do you go about starting the plugin? Do you run yo code? Do you run npm init? Do you just create a single file index.js? I am very unclear how to begin development of this plugin.
About this issue
- Original URL
- State: open
- Created 3 years ago
- Reactions: 1
- Comments: 15 (7 by maintainers)
That code sample goes in your
package.jsonand the tsconfig would have"my-plugin"Cool! I’ve updated the code on the wiki page (and you’re welcome to update it too, https://github.com/microsoft/TypeScript-wiki/blob/main/Writing-a-Language-Service-Plugin.md ) to handle
strict: truewhich should remove the compiler errors.The system is very simple - you give the
tsconfig.jsona node-style resolution path to the JavaScript file you’ve made, I thought the ‘testing locally’ section did a pretty good job covering that but I’m open to improvementsLooks like the code samples assume
strict: false(given that that is the default tsconfig) I think we probably just need to update it to run in strict also