tsx.test-d.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // TSX w/ defineComponent is tested in defineComponent.test-d.tsx
  2. import { expectError, expectType } from 'tsd'
  3. import { KeepAlive, Suspense, Fragment, Portal } from '@vue/runtime-dom'
  4. expectType<JSX.Element>(<div />)
  5. expectType<JSX.Element>(<div id="foo" />)
  6. expectType<JSX.Element>(<input value="foo" />)
  7. // unknown prop
  8. expectError(<div foo="bar" />)
  9. // allow key/ref on arbitrary element
  10. expectType<JSX.Element>(<div key="foo" />)
  11. expectType<JSX.Element>(<div ref="bar" />)
  12. expectType<JSX.Element>(
  13. <input
  14. onInput={e => {
  15. // infer correct event type
  16. expectType<EventTarget | null>(e.target)
  17. }}
  18. />
  19. )
  20. // built-in types
  21. expectType<JSX.Element>(<Fragment />)
  22. expectType<JSX.Element>(<Fragment key="1" />)
  23. expectType<JSX.Element>(<Portal target="#foo" />)
  24. // target is required
  25. expectError(<Portal />)
  26. // KeepAlive
  27. expectType<JSX.Element>(<KeepAlive include="foo" exclude={['a']} />)
  28. expectError(<KeepAlive include={123} />)
  29. // Suspense
  30. expectType<JSX.Element>(<Suspense />)
  31. expectType<JSX.Element>(<Suspense onResolve={() => {}} onRecede={() => {}} />)
  32. expectError(<Suspense onResolve={123} />)