I have a readonly object property foo on a typescript class. When I create an instance bar by calling the constructor, bar.foo doesn't compare equal to this.foo as seen from within bar several async calls later. What could I have possibly fucked up?

  • 0
    Need to see code to say. Could be a number of reasons including the return type of Foo(), and where Foo() is called from due to JavaScript 'this' invocation patterns.
  • 1
    Do you call the constructor or do you use the new keywords 🤔

    You fucked up good I’d say
  • 0
    @example-user I use new. I also have a relatively strict eslint config so it wouldn't even let me do otherwise.
  • 0
    What is the value of foo in both instances? Is it undefined in one of them? You mentioned async. It may be that you are getting an object that doesn't implement the class but ts thinks it does. Tbh using libraries that warent explicitly written in ts can be a nightmare.
  • 0
    Okay I figured it out, it had nothing to do with typescript, I just had a leftover client on the same server that was ahead in the handler tables and thus replied quicker than the client I was monitoring,. The monitored one thought that its messages were passing through so it updated its state to match the leech up to a certain point, which is why I couldn't tell them apart while debugging and thought that they were the same object and the connection instance changed over time.
Add Comment