Skip to content

Commit

Permalink
fix(types/jsx): jsx-runtime types for global JSX namespace registrati…
Browse files Browse the repository at this point in the history
…on (vuejs#7978)
  • Loading branch information
sodatea authored and IAmSSH committed Apr 29, 2023
1 parent 6017a66 commit 5f0e7ab
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 9 deletions.
39 changes: 30 additions & 9 deletions packages/vue/jsx.d.ts
@@ -1,15 +1,36 @@
// global JSX namespace registration
import { JSX as JSXInternal } from './jsx-runtime'
// somehow we have to copy=pase the jsx-runtime types here to make TypeScript happy
import { VNode, VNodeRef } from '@vue/runtime-dom'
import { IntrinsicElementAttributes } from './jsx-runtime/dom'

export * from './jsx-runtime/dom'

export type ReservedProps = {
key?: string | number | symbol
ref?: VNodeRef
ref_for?: boolean
ref_key?: string
}

export type NativeElements = {
[K in keyof IntrinsicElementAttributes]: IntrinsicElementAttributes[K] &
ReservedProps
}

declare global {
namespace JSX {
interface Element extends JSXInternal.Element {}
interface ElementClass extends JSXInternal.ElementClass {}
interface ElementAttributesProperty
extends JSXInternal.ElementAttributesProperty {}
interface IntrinsicElements extends JSXInternal.IntrinsicElements {}
interface IntrinsicAttributes extends JSXInternal.IntrinsicAttributes {}
export interface Element extends VNode {}
export interface ElementClass {
$props: {}
}
export interface ElementAttributesProperty {
$props: {}
}
export interface IntrinsicElements extends NativeElements {
// allow arbitrary elements
// @ts-ignore suppress ts:2374 = Duplicate string index signature.
[name: string]: any
}
export interface IntrinsicAttributes extends ReservedProps {}
}
}

export {}
2 changes: 2 additions & 0 deletions packages/vue/types/jsx-register.d.ts
Expand Up @@ -2,3 +2,5 @@
// imports the global JSX namespace registration for compat.
// TODO: remove in 3.4
import '../jsx'

export * from '../jsx-runtime/dom'

0 comments on commit 5f0e7ab

Please sign in to comment.