| 
									
										
										
										
											2019-12-22 23:58:12 +08:00
										 |  |  | // TSX w/ defineComponent is tested in defineComponent.test-d.tsx
 | 
					
						
							| 
									
										
										
										
											2020-06-09 22:17:42 +08:00
										 |  |  | import { | 
					
						
							|  |  |  |   KeepAlive, | 
					
						
							|  |  |  |   Suspense, | 
					
						
							|  |  |  |   Fragment, | 
					
						
							|  |  |  |   Teleport, | 
					
						
							|  |  |  |   expectError, | 
					
						
							| 
									
										
										
										
											2021-03-30 05:38:25 +08:00
										 |  |  |   expectType, | 
					
						
							|  |  |  |   VNode | 
					
						
							| 
									
										
										
										
											2020-06-09 22:17:42 +08:00
										 |  |  | } from './index' | 
					
						
							| 
									
										
										
										
											2019-11-05 07:38:55 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-30 05:38:25 +08:00
										 |  |  | expectType<VNode>(<div />) | 
					
						
							| 
									
										
										
										
											2019-11-05 07:38:55 +08:00
										 |  |  | expectType<JSX.Element>(<div />) | 
					
						
							|  |  |  | expectType<JSX.Element>(<div id="foo" />) | 
					
						
							|  |  |  | expectType<JSX.Element>(<input value="foo" />) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-02 01:31:40 +08:00
										 |  |  | // @ts-expect-error style css property validation
 | 
					
						
							|  |  |  | expectError(<div style={{ unknown: 123 }} />) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // allow array styles and nested array styles
 | 
					
						
							|  |  |  | expectType<JSX.Element>(<div style={[{ color: 'red' }]} />) | 
					
						
							|  |  |  | expectType<JSX.Element>( | 
					
						
							|  |  |  |   <div style={[{ color: 'red' }, [{ fontSize: '1em' }]]} /> | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-09 22:17:42 +08:00
										 |  |  | // @ts-expect-error unknown prop
 | 
					
						
							| 
									
										
										
										
											2019-11-05 07:38:55 +08:00
										 |  |  | expectError(<div foo="bar" />) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // allow key/ref on arbitrary element
 | 
					
						
							|  |  |  | expectType<JSX.Element>(<div key="foo" />) | 
					
						
							|  |  |  | expectType<JSX.Element>(<div ref="bar" />) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | expectType<JSX.Element>( | 
					
						
							|  |  |  |   <input | 
					
						
							|  |  |  |     onInput={e => { | 
					
						
							|  |  |  |       // infer correct event type
 | 
					
						
							|  |  |  |       expectType<EventTarget | null>(e.target) | 
					
						
							|  |  |  |     }} | 
					
						
							|  |  |  |   /> | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // built-in types
 | 
					
						
							|  |  |  | expectType<JSX.Element>(<Fragment />) | 
					
						
							|  |  |  | expectType<JSX.Element>(<Fragment key="1" />) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-02 10:04:55 +08:00
										 |  |  | expectType<JSX.Element>(<Teleport to="#foo" />) | 
					
						
							|  |  |  | expectType<JSX.Element>(<Teleport to="#foo" key="1" />) | 
					
						
							| 
									
										
										
										
											2020-06-09 22:17:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | // @ts-expect-error
 | 
					
						
							| 
									
										
										
										
											2020-04-02 10:04:55 +08:00
										 |  |  | expectError(<Teleport />) | 
					
						
							| 
									
										
										
										
											2020-06-09 22:17:42 +08:00
										 |  |  | // @ts-expect-error
 | 
					
						
							| 
									
										
										
										
											2020-04-02 10:04:55 +08:00
										 |  |  | expectError(<Teleport to={1} />) | 
					
						
							| 
									
										
										
										
											2019-11-05 07:38:55 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | // KeepAlive
 | 
					
						
							|  |  |  | expectType<JSX.Element>(<KeepAlive include="foo" exclude={['a']} />) | 
					
						
							| 
									
										
										
										
											2020-02-16 10:48:45 +08:00
										 |  |  | expectType<JSX.Element>(<KeepAlive key="1" />) | 
					
						
							| 
									
										
										
										
											2020-06-09 22:17:42 +08:00
										 |  |  | // @ts-expect-error
 | 
					
						
							| 
									
										
										
										
											2019-11-05 07:38:55 +08:00
										 |  |  | expectError(<KeepAlive include={123} />) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Suspense
 | 
					
						
							|  |  |  | expectType<JSX.Element>(<Suspense />) | 
					
						
							| 
									
										
										
										
											2020-02-16 10:48:45 +08:00
										 |  |  | expectType<JSX.Element>(<Suspense key="1" />) | 
					
						
							| 
									
										
										
										
											2020-09-16 21:30:47 +08:00
										 |  |  | expectType<JSX.Element>( | 
					
						
							|  |  |  |   <Suspense onResolve={() => {}} onFallback={() => {}} onPending={() => {}} /> | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2020-06-09 22:17:42 +08:00
										 |  |  | // @ts-expect-error
 | 
					
						
							| 
									
										
										
										
											2019-11-05 07:38:55 +08:00
										 |  |  | expectError(<Suspense onResolve={123} />) |