-
Notifications
You must be signed in to change notification settings - Fork 12.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
In JS, importing JSON should not give an error #7071
Comments
This is the domain of plugin loaders and there are mechanism already for describing how a plugin loader would work and #6615 will provide a better mechanism for handling this. Building this into TypeScript directly wouldn't make sense and likely break lots of other implementations, where people are properly using loader plugins. |
@kitsonk Sorry but I'm not sure why it about plugin loader while this case is about intellisense (which I think it is provided by salsa) |
The compiler could do this in theory, parsing the JSON structure in a similar way to how it would parse an object literal in a Having said that, |
@yortus I think both I'm not sure how salsa implement, which part call which compiler, however salsa could read all those weird jsdoc and constructor to parse into intellisense so just include require json file should be in the same place as putting other intellisense |
It would be doable with some work, and as commented, we already have some Node specific behavior. That said, as others have commented, this is a very little used feature, so unless we see a lot of demand for it, I don't see it reaching the top of our TODO list any time soon. |
I am not 100% sure in Salsa, but isn't there a way to assert the an object literal type in JSDoc for this, something like: /**
* @type {Foo}
*/
var foo = require('foo.json'); In TypeScript that is generally what I do when loading JSON and while in theory the structures could get out of sync at design time, they of course can get out of sync at run-time too, so having them "automagically" determined at run-time is of somewhat limited value. |
Accepting PRs on this if anyone would like to give it a shot. This should only be allowed when the module system is |
I'd be interested in taking a swing at this, but I haven't worked with Typescripts internals before. Any advice beyond the general contributing guidance? |
Minor: that require statement should be most likely have a relative path prefix |
I would start by looking at: I would assume the first step is getting a JSON parser in place. i would expect that to be based on our current parser, possibly with an option to createSourceFile, or just a new ScriptKind. |
Thanks for you all hard work There is guideline from node people I think it would be useful https://nodejs.org/api/modules.html#modules_all_together |
+1 it just feels natural to be able to do this if you're used to doing it within Node. Making it a built-in feature would ease the transition to TypeScript for Node-based projects. Also, I could imagine this feature being useful in the browser as well - maybe TypeScript could pave the way for JSON importing in the next ECMAScript spec. |
+1 |
+1 For this feature to benefits usage such as importing JSON configurations/locales to projects. |
Make a json file
Code
result
expect
The text was updated successfully, but these errors were encountered: