]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(types/jsx): jsx-runtime types for global JSX namespace registration (#7978)
authorHaoqun Jiang <haoqunjiang@gmail.com>
Wed, 29 Mar 2023 08:15:08 +0000 (16:15 +0800)
committerGitHub <noreply@github.com>
Wed, 29 Mar 2023 08:15:08 +0000 (16:15 +0800)
packages/vue/jsx.d.ts
packages/vue/types/jsx-register.d.ts

index 4057d6afc9ce4b39bbcb8d5e24f7731a9501e1e8..947a99044196086ccefe4a6923acd599d171f548 100644 (file)
@@ -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 {}
index a626f798c2abc9d4a571db276d67bbbd81cbbce1..af5d5f29023f50e7feb11ccefcef254217459a9b 100644 (file)
@@ -2,3 +2,5 @@
 // imports the global JSX namespace registration for compat.
 // TODO: remove in 3.4
 import '../jsx'
+
+export * from '../jsx-runtime/dom'