What happens when one of the APIs for node or Mongo adds a function? Would we have to wait for TypeScript to add the function to the interface, otherwise there will always be compilation errors? This sounds a little delicate.
Yeah, I agree with that, but when I upgrade Node I also don't want to spend an hour or two fixing out-of-date interface definitions (although that would be a great way to get familiarized with Node changes).
I suspect that if TypeScript takes off that this will probably be crowd sourced, i.e. expect to see a ts-node project on github.
That said, I think they've done a reasonably good job of making it painless. Even if it weren't required, I quite like the idea of explicitly listing the 'global' dependencies a particular script has. I think it's going to make unit testing it more pleasant, i.e. because you declare the dependencies your script has, it's obvious what you need to mock out from the environment to unit test it.
The interface just adds type annotations. You can still use APIs without type annotations, and untyped variables in Typescript itself if you want. It's not 'delicate' what so ever.
Comments
What happens when one of the APIs for node or Mongo adds a function? Would we have to wait for TypeScript to add the function to the interface, otherwise there will always be compilation errors? This sounds a little delicate.
You could just go and change it manually, it's just a source file. It also sounds like they're open sourcing the lot...
Yeah, I agree with that, but when I upgrade Node I also don't want to spend an hour or two fixing out-of-date interface definitions (although that would be a great way to get familiarized with Node changes).
I suspect that if TypeScript takes off that this will probably be crowd sourced, i.e. expect to see a ts-node project on github.
That said, I think they've done a reasonably good job of making it painless. Even if it weren't required, I quite like the idea of explicitly listing the 'global' dependencies a particular script has. I think it's going to make unit testing it more pleasant, i.e. because you declare the dependencies your script has, it's obvious what you need to mock out from the environment to unit test it.
The interface just adds type annotations. You can still use APIs without type annotations, and untyped variables in Typescript itself if you want. It's not 'delicate' what so ever.