I've been writing Typescript with React for quite a while now and these are my feelings so far:
- Typescript type system is pretty awesome, and allows the expression of some things really elegantly; in particular, string literal types are quite cool for component props that feel "htmly", union and intersection types are great for making reusable/generic components and Partial is cool for making typesafe component states (https://www.typescriptlang.org/docs/handbook/advanced-types.... is a great resource)
- on a related note, the Typescript docs are very comprehensive
- ... but docs for anything React related to Typescript (types of components, etc) are harder to come by
- for the actual UI code there is some time wasted getting type signatures perfectly correct, particularly for React and HTML components, but I've built up a bank of helper functions in this regard.
- using `any` nearly always comes back to bite you as you trick yourself into feeling typesafe
- there is always a tradeoff between having perfectly exact types and not writing 139587123598 interfaces; expressing, for instance, mapStateToProps, mapDispatchToProps and mergeProps to compose into component props, or the former as a subtype the latter is pretty fiddly to get right and imo not worth the extra code
- create-react-app typescript support has gotten pretty good now, but it's nigh-impossible to step outside their boundaries. For me, some older features of typescript I wanted that protobufjs generated typescript used was just not usable and I had to work around that with great difficulty
- nearly all packages now have type definitions for them which is sick
- at the end of the day, you can still resort to vanilla JS where typescript really, really gets in the way
FWIW I have a used-in-production project that generates idiomatic TypeScript types for protobuf:
https://github.com/stephenh/ts-proto
As a disclaimer, it assumes you use Twirp for any RPC impls, merely b/c that is what we used, and so it needs a config flag to turn that off + also eventual support for canonical GRPC-style RPC.
And also the docs/install/setup all need polished, but feel free to file issues / PRs if you try it.