The one recommended in the docs is just for children with exactly that type.
RestrictedElement lets you also use things that render things of that type. So suppose you have some Button class. Let's say the button has a disabled flag. You might want to make another class:
You can't use
DisabledButton inside a children array for
React.Element<typeof Button> but you can in
RestrictedElement<typeof Button>. (via @jbrown215)