Set context of this keyword in definition file
See original GitHub issueSearch Terms
set this
context in typescript definition file
Suggestion
A way to change the context of this
keyword in a type definition file. This is admittedly a weird feature since, to my knowledge, it doesn’t really align with how modules work. Perhaps there is another way to achieve this use case.
Use Cases
Here’s a video of how my application works - https://vimeo.com/315553984
I have an application that allows users to write code which will then be executed via the Function
API - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function
Here’s a simplified version of how the app works at its core -
const userCode = `
console.log(this, foo, bar);
`;
const func = Function('foo', 'bar', userCode);
func.call({myThis: 'hello'}, 'fooString', 'barString');
My app allows users to write their code in Monaco editor and I’ve successfully added type definitions for the foo
and bar
variables via the addExtraLib
method - https://microsoft.github.io/monaco-editor/api/interfaces/monaco.languages.typescript.languageservicedefaults.html
So when the user starts to type foo
intellisense informs them that it is a string. I’d like to do the same for the this
keyword.
Examples
See use cases ^
Checklist
My suggestion meets these guidelines:
- This wouldn’t be a breaking change in existing TypeScript/JavaScript code
- This wouldn’t change the runtime behavior of existing JavaScript code
- This could be implemented without emitting different JS based on the types of the expressions
- This isn’t a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
- This feature would agree with the rest of TypeScript’s Design Goals.
Issue Analytics
- State:
- Created 5 years ago
- Reactions:6
- Comments:5 (2 by maintainers)
Top GitHub Comments
Is there anyway TS knows what
this
is in the global scope? https://www.typescriptlang.org/play/#src=const thing %3D this%3BIf you hover over
this
in the above playground link it shows asany
It feels like a Monaco editor issue. But I’m not 100% sure.