tsx.test-d.tsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // TSX w/ defineComponent is tested in defineComponent.test-d.tsx
  2. import {
  3. KeepAlive,
  4. Suspense,
  5. Fragment,
  6. Teleport,
  7. expectError,
  8. expectType,
  9. VNode
  10. } from './index'
  11. expectType<VNode>(<div />)
  12. expectType<JSX.Element>(<div />)
  13. expectType<JSX.Element>(<div id="foo" />)
  14. expectType<JSX.Element>(<input value="foo" />)
  15. // @ts-expect-error style css property validation
  16. expectError(<div style={{ unknown: 123 }} />)
  17. // allow array styles and nested array styles
  18. expectType<JSX.Element>(<div style={[{ color: 'red' }]} />)
  19. expectType<JSX.Element>(
  20. <div style={[{ color: 'red' }, [{ fontSize: '1em' }]]} />
  21. )
  22. // @ts-expect-error unknown prop
  23. expectError(<div foo="bar" />)
  24. // allow key/ref on arbitrary element
  25. expectType<JSX.Element>(<div key="foo" />)
  26. expectType<JSX.Element>(<div ref="bar" />)
  27. expectType<JSX.Element>(
  28. <input
  29. onInput={e => {
  30. // infer correct event type
  31. expectType<EventTarget | null>(e.target)
  32. }}
  33. />
  34. )
  35. // built-in types
  36. expectType<JSX.Element>(<Fragment />)
  37. expectType<JSX.Element>(<Fragment key="1" />)
  38. expectType<JSX.Element>(<Teleport to="#foo" />)
  39. expectType<JSX.Element>(<Teleport to="#foo" key="1" />)
  40. // @ts-expect-error
  41. expectError(<Teleport />)
  42. // @ts-expect-error
  43. expectError(<Teleport to={1} />)
  44. // KeepAlive
  45. expectType<JSX.Element>(<KeepAlive include="foo" exclude={['a']} />)
  46. expectType<JSX.Element>(<KeepAlive key="1" />)
  47. // @ts-expect-error
  48. expectError(<KeepAlive include={123} />)
  49. // Suspense
  50. expectType<JSX.Element>(<Suspense />)
  51. expectType<JSX.Element>(<Suspense key="1" />)
  52. expectType<JSX.Element>(
  53. <Suspense onResolve={() => {}} onFallback={() => {}} onPending={() => {}} />
  54. )
  55. // @ts-expect-error
  56. expectError(<Suspense onResolve={123} />)