Property 'metadata' does not exist on type 'Object'
See original GitHub issueUsing the latest API version, and writing my code in Typescript, when trying to get the metadata
object inside data.object
, I get this error in my IDE, stopping TypeScript form compiling:
Property ‘metadata’ does not exist on type ‘Object’
metadata
is 100% in the data.object
object, so not sure why it’s not including in the types?
Issue Analytics
- State:
- Created 2 years ago
- Comments:10 (4 by maintainers)
Top Results From Across the Web
Typescript : Property does not exist on type 'object'
I am using JSforce and trying to use "search" function on the object but it is throwing "Property 'search' does not exist on...
Read more >Fix - Property does not exist on type '{}' in TypeScript
To fix the error “Property does not exist on type '{}'” in Typescript and when working with node, remember to access only object...
Read more >The property '__metadata' does not exist on type 'SP.Group ...
The property '__metadata' does not exist on type 'SP.Group'. Make sure to only use property names that are defined by the type.
Read more >[Solved]-Property 'x' does not exist on type - appsloveworld
The error is telling you that the type it's inferred for userCredential does have a user property with a metadata property, but the...
Read more >Documentation - Decorators - TypeScript
and so the new property `reportingURL` is not known. // to the type system: bug . reportingURL ;. Property 'reportingURL' does not exist...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
I am not a TypeScript expert but I do wonder if, whilst this is how the library is designed at the moment, it is something which could possibly be improved. It seems that improving the typings in some way (perhaps with discriminated unions) might make this a bit more user friendly and reduce the times when it is necessary to manually cast the object which seems to introduce the possibility for incorrectly casting when it might be possible to let TypeScript manage this by itself.
I just wanted to confirm that there was a modicum of basis to what I was saying so I attempted to modify the types I am making use of to see if it was possible. I made a small modification to types/2020-08-27/Events.d.ts implementing a base “EventBase” interface which has all of the common properties and then two example event interfaces “PaymentIntentEvent” and “SubscriptionEvent” which extend “EventBase” but have a union of possible values for the type and specific types for data.object. This means that a simple switch on event.type allows TypeScript to correctly (in this very contrived example) infer the type of object.
I understand that actually implementing this may not be at all simple and I don’t know if the way you are currently generating the types from OpenAPI even allows this but I think it is fair to say that this is at least an opportunity for improvement in the library since it seems that TypeScript is capable of representing the way the API works more accurately
Here is my example Events.d.ts (obviously I understand that this is not at all how you would implement this but is just a minimum example which I think shows that it is possible to achieve this).