5 ms·
The object literal syntax also sucks :( https://gist.github.com/deadlyicon/79c09610cac5a67f4a5d https://gist.github.com/deadlyicon/79c09610cac5a67f4a5d
by jaredgrippe 12y ago
The object literal syntax also sucks :(
https://gist.github.com/deadlyicon/79c09610cac5a67f4a5d https://gist.github.com/deadlyicon/79c09610cac5a67f4a5d
- spion 12y agoAgreed. * JSX more tightly coupled, * less straightforward JSX->JS mapping - I used to be so excited to tell people how JSX simply maps to function calls in JS... well, now it generates boilerplate instead. * worse non-JSX syntax I don't buy the ES6/CS/TS argument - wrapping classes with createFactory before exporting seems fine to me, and I use typescript. Also, from what I can see the object literal syntax is always worse. So its basically all about Jest. The only reason I see is that a mocking tool can't handle factories. Makes me a bit sad. Seems like a good example of "test induced design damage" to me. How about adding plugins to that mocking tool instead?
- peterhunt 12y agoIf you wrap the class in createFactory() then you break instanceof; how is this fine?
- chenglou 12y agoSee my link on sebmarkbage's reply. It's not just for Jest.
- spion 12y agoOkay, except for JSX I agree that the change towards native classes is for the better. But the change in JSX seems to be just for Jest. JSX could still compile to function calls and stay completely decoupled from React. A new function `createFactory` would be introduced that takes a class argument and produces a factory, making ES6, CS and TS users pleased. No backward-compatibility breakage would be introduced. edit: removed a non-constructive paragraph. Will play around with the new version more before commenting further. Hopefully I'll understand why JSX is a lot more complicated than it used to be :/