Skip to content

Commit 22c7903

Browse files
committed
chore: revert jsx.d.ts
1 parent b7d7ac7 commit 22c7903

File tree

19 files changed

+172
-53
lines changed

19 files changed

+172
-53
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"test-e2e-vapor": "pnpm run prepare-e2e-vapor && vitest --project e2e-vapor",
2323
"prepare-e2e-vapor": "node scripts/build.js -f cjs+esm-bundler+esm-bundler-runtime && pnpm run -C packages-private/vapor-e2e-test build",
2424
"test-dts": "run-s build-dts test-dts-only",
25-
"test-dts-only": "tsc -p packages-private/dts-built-test/tsconfig.json && tsc -p ./packages-private/dts-test/tsconfig.test.json",
25+
"test-dts-only": "tsc -p packages-private/dts-built-test/tsconfig.json && tsc -p ./packages-private/dts-test/tsconfig.test.json && tsc -p ./packages-private/dts-test/vapor/tsconfig.json",
2626
"test-coverage": "vitest run --project unit* --coverage",
2727
"prebench": "node scripts/build.js -pf esm-browser reactivity",
2828
"prebench-compare": "node scripts/build.js -pf esm-browser reactivity",

packages-private/dts-test/functionalComponent.test-d.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,11 @@ import { expectType } from './utils'
99

1010
// simple function signature
1111
const Foo = (props: { foo: number }) => h(Text, null, props.foo)
12-
const VaporComp = (props: { foo: number }) => [<div>123</div>]
1312

1413
// TSX
1514
expectType<JSX.Element>(<Foo foo={1} />)
1615
expectType<JSX.Element>(<Foo foo={1} key="1" />)
1716
expectType<JSX.Element>(<Foo foo={1} ref="ref" />)
18-
expectType<JSX.Element>(<VaporComp foo={1} />)
19-
expectType<JSX.Element>(<VaporComp foo={1} key="1" />)
20-
expectType<JSX.Element>(<VaporComp foo={1} ref="ref" />)
2117
// @ts-expect-error
2218
;<Foo />
2319
// @ts-expect-error

packages-private/dts-test/tsconfig.test.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"module": "esnext",
66
"strict": true,
77
"moduleResolution": "node",
8-
"lib": ["esnext", "dom"]
8+
"lib": ["esnext", "dom"],
9+
"types": ["vue/jsx"]
910
},
1011
"include": ["./*"]
1112
}

packages-private/dts-test/tsx.test-d.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// TSX w/ defineComponent is tested in defineComponent.test-d.tsx
2-
import { Fragment, KeepAlive, type RenderReturn, Suspense, Teleport } from 'vue'
2+
import { Fragment, KeepAlive, Suspense, Teleport, type VNode } from 'vue'
33
import { expectType } from './utils'
44

5-
expectType<RenderReturn>(<div />)
5+
expectType<VNode>(<div />)
66
expectType<JSX.Element>(<div />)
77
expectType<JSX.Element>(<div id="foo" />)
88
expectType<JSX.Element>(<div>hello</div>)

packages-private/dts-test/utils.d.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
// This directory contains a number of d.ts assertions
22
// use \@ts-expect-error where errors are expected.
33

4-
// register global JSX
5-
import 'vue/jsx'
6-
74
export function describe(_name: string, _fn: () => void): void
85
export function test(_name: string, _fn: () => any): void
96

packages-private/dts-test/defineVaporComponent.test-d.tsx renamed to packages-private/dts-test/vapor/defineVaporComponent.test-d.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ import {
1717
reactive,
1818
ref,
1919
} from 'vue'
20-
import { type IsAny, type IsUnion, describe, expectType } from './utils'
20+
import './jsx'
21+
import { type IsAny, type IsUnion, describe, expectType } from '../utils'
22+
import '../built.test-d'
2123

2224
describe('with object props', () => {
2325
interface ExpectedProps {
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import type { FunctionalVaporComponent } from 'vue'
2+
import { expectType } from '../utils'
3+
import type { Block } from 'vue'
4+
5+
// simple function signature
6+
const VaporComp = (props: { foo: number }) => [<div>123</div>]
7+
8+
// TSX
9+
expectType<JSX.Element>(<VaporComp foo={1} />)
10+
expectType<JSX.Element>(<VaporComp foo={1} key="1" />)
11+
expectType<JSX.Element>(<VaporComp foo={1} ref="ref" />)
12+
// @ts-expect-error
13+
;<Foo />
14+
// @ts-expect-error
15+
;<Foo foo="bar" />
16+
// @ts-expect-error
17+
;<Foo baz="bar" />
18+
19+
// Explicit signature with props + emits
20+
const Bar: FunctionalVaporComponent<
21+
{ foo: number },
22+
{ update: (value: number) => void }
23+
> = (props, { emit }) => {
24+
expectType<number>(props.foo)
25+
26+
emit('update', 123)
27+
// @ts-expect-error
28+
emit('nope')
29+
// @ts-expect-error
30+
emit('update')
31+
// @ts-expect-error
32+
emit('update', 'nope')
33+
return []
34+
}
35+
36+
// assigning runtime options
37+
Bar.props = {
38+
foo: Number,
39+
}
40+
// @ts-expect-error
41+
Bar.props = { foo: String }
42+
43+
Bar.emits = {
44+
update: value => value > 1,
45+
}
46+
// @ts-expect-error
47+
Bar.emits = { baz: () => void 0 }
48+
49+
// TSX
50+
expectType<JSX.Element>(<Bar foo={1} onUpdate={() => {}} />)
51+
// @ts-expect-error
52+
;<Foo />
53+
// @ts-expect-error
54+
;<Bar foo="bar" />
55+
// @ts-expect-error
56+
;<Foo baz="bar" />
57+
58+
const Quux: FunctionalVaporComponent<
59+
{},
60+
{},
61+
{
62+
default: (props: { foo: number }) => Block
63+
optional?: (props: { foo: number }) => Block
64+
}
65+
> = (props, { emit, slots }) => {
66+
expectType<{
67+
default: (scope: { foo: number }) => Block
68+
optional?: (scope: { foo: number }) => Block
69+
}>(slots)
70+
71+
slots.default({ foo: 123 })
72+
// @ts-expect-error
73+
slots.default({ foo: 'fesf' })
74+
75+
slots.optional?.({ foo: 123 })
76+
// @ts-expect-error
77+
slots.optional?.({ foo: 'fesf' })
78+
// @ts-expect-error
79+
slots.optional({ foo: 123 })
80+
return []
81+
}
82+
;<Quux />
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import type { NativeElements, ReservedProps, VaporRenderResult } from 'vue'
2+
3+
declare global {
4+
namespace JSX {
5+
export type Element = VaporRenderResult
6+
export interface IntrinsicElements extends NativeElements {
7+
[name: string]: any
8+
}
9+
export interface IntrinsicAttributes extends ReservedProps {}
10+
}
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"compilerOptions": {
3+
"noEmit": true,
4+
"strict": true,
5+
"module": "esnext",
6+
"moduleResolution": "node",
7+
"jsx": "preserve",
8+
"lib": ["esnext", "dom"]
9+
},
10+
"include": ["."]
11+
}

packages/runtime-core/src/apiDefineComponent.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ export function defineComponent<
155155
setup: (
156156
props: Props,
157157
ctx: SetupContext<E, S>,
158-
) => RenderFunction | Promise<RenderFunction> | {},
158+
) => RenderFunction | Promise<RenderFunction>,
159159
options?: Pick<ComponentOptions, 'name' | 'inheritAttrs'> & {
160160
props?: (keyof Props)[]
161161
emits?: E | EE[]

0 commit comments

Comments
 (0)