tsx.test-d.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. } from './index'
  10. expectType<JSX.Element>(<div />)
  11. expectType<JSX.Element>(<div id="foo" />)
  12. expectType<JSX.Element>(<input value="foo" />)
  13. // @ts-expect-error unknown prop
  14. expectError(<div foo="bar" />)
  15. // allow key/ref on arbitrary element
  16. expectType<JSX.Element>(<div key="foo" />)
  17. expectType<JSX.Element>(<div ref="bar" />)
  18. expectType<JSX.Element>(
  19. <input
  20. onInput={e => {
  21. // infer correct event type
  22. expectType<EventTarget | null>(e.target)
  23. }}
  24. />
  25. )
  26. // built-in types
  27. expectType<JSX.Element>(<Fragment />)
  28. expectType<JSX.Element>(<Fragment key="1" />)
  29. expectType<JSX.Element>(<Teleport to="#foo" />)
  30. expectType<JSX.Element>(<Teleport to="#foo" key="1" />)
  31. // @ts-expect-error
  32. expectError(<Teleport />)
  33. // @ts-expect-error
  34. expectError(<Teleport to={1} />)
  35. // KeepAlive
  36. expectType<JSX.Element>(<KeepAlive include="foo" exclude={['a']} />)
  37. expectType<JSX.Element>(<KeepAlive key="1" />)
  38. // @ts-expect-error
  39. expectError(<KeepAlive include={123} />)
  40. // Suspense
  41. expectType<JSX.Element>(<Suspense />)
  42. expectType<JSX.Element>(<Suspense key="1" />)
  43. expectType<JSX.Element>(<Suspense onResolve={() => {}} onRecede={() => {}} />)
  44. // @ts-expect-error
  45. expectError(<Suspense onResolve={123} />)