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.json
and 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: true
which should remove the compiler errors.The system is very simple - you give the
tsconfig.json
a 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