var jsx = <node/>; var jsx = <node><child/></node>; var jsx = <node>...<child>...</child></node>; var jsx = <div><span><br /></span></div>; var jsx = <pre-node><child /></pre-node>; var x = 5; return (<node attr="value"></node>); const n = () => <X /> const m = () => <X x="" /> class App extends Component { render() { return ( <BrowserRouter> <div> <Route path="/about" component={About} /> <Route path="/contact" component={Contact} /> </div> </BrowserRouter> ); } } var x = 5; // this is NOT JSX and should not trigger the rule interface Prefixer<Something extends string> { (): `other__${Something}`; parse: <From extends string>( value: From ) => number; } const cloneWith = <T, A extends keyof T, V>( i: T, a: A, value: V ): Omit<T, A> & {[K in A]: V} => ({ ...i, [a]: value, });