| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // TSX w/ defineComponent is tested in defineComponent.test-d.tsx
- import {
- KeepAlive,
- Suspense,
- Fragment,
- Teleport,
- expectError,
- expectType,
- VNode
- } from './index'
- expectType<VNode>(<div />)
- expectType<JSX.Element>(<div />)
- expectType<JSX.Element>(<div id="foo" />)
- expectType<JSX.Element>(<input value="foo" />)
- // @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' }]]} />
- )
- // @ts-expect-error unknown prop
- 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" />)
- expectType<JSX.Element>(<Teleport to="#foo" />)
- expectType<JSX.Element>(<Teleport to="#foo" key="1" />)
- // @ts-expect-error
- expectError(<Teleport />)
- // @ts-expect-error
- expectError(<Teleport to={1} />)
- // KeepAlive
- expectType<JSX.Element>(<KeepAlive include="foo" exclude={['a']} />)
- expectType<JSX.Element>(<KeepAlive key="1" />)
- // @ts-expect-error
- expectError(<KeepAlive include={123} />)
- // Suspense
- expectType<JSX.Element>(<Suspense />)
- expectType<JSX.Element>(<Suspense key="1" />)
- expectType<JSX.Element>(
- <Suspense onResolve={() => {}} onFallback={() => {}} onPending={() => {}} />
- )
- // @ts-expect-error
- expectError(<Suspense onResolve={123} />)
|