From a syntactic perspective, this is quite baffling. The (: typeName) notation is unlike anything I’ve encountered so far. To the untrained eye, this may appear to be invalid syntax.
Where else can I use this? What does the combination of a colon and type signify? Why can it be used in an attribute?
Additionally, it’s rather strange why this is necessary, especially since the new @react.componentWithProps does not work. It feels somewhat disjointed, to be honest.