Skip to content

Commit ffaf81b

Browse files
committed
chore: fix type tests
1 parent 206f8a7 commit ffaf81b

File tree

8 files changed

+85
-19
lines changed

8 files changed

+85
-19
lines changed

Diff for: packages/server-renderer/package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@
3434
"source-map": "0.5.6"
3535
},
3636
"devDependencies": {
37+
"@types/webpack": "^4.41.32",
38+
"file-loader": "^3.0.1",
3739
"memory-fs": "^0.5.0",
3840
"vue": "file:../..",
39-
"webpack": "^4.46.0",
40-
"file-loader": "^3.0.1"
41+
"webpack": "^4.46.0"
4142
},
4243
"homepage": "https://github.com/vuejs/vue/tree/dev/packages/vue-server-renderer#readme"
4344
}

Diff for: types/test/ssr-test.ts renamed to packages/server-renderer/types/test.ts

+5-8
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import Vue, { VNode, VNodeDirective } from '../index'
2-
import VueSSRClientPlugin = require('../../packages/vue-server-renderer/client-plugin')
3-
import VueSSRServerPlugin = require('../../packages/vue-server-renderer/server-plugin')
4-
import webpack = require('webpack')
1+
import Vue, { VNode, VNodeDirective } from '../../../types/index'
2+
import VueSSRClientPlugin from '../client-plugin'
3+
import VueSSRServerPlugin from '../server-plugin'
4+
import webpack from 'webpack'
55
import { readFileSync } from 'fs'
6-
import {
7-
createRenderer,
8-
createBundleRenderer
9-
} from '../../packages/vue-server-renderer'
6+
import { createRenderer, createBundleRenderer } from '.'
107

118
function createApp(context: any) {
129
return new Vue({

Diff for: packages/server-renderer/types/tsconfig.json

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"moduleResolution": "node",
66
"strict": true,
77
"noEmit": true,
8+
"allowSyntheticDefaultImports": true,
89
"paths": {
910
"vue": ["../../../types/index.d.ts"]
1011
}

Diff for: pnpm-lock.yaml

+42-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: types/index.d.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ export {
1111
ComponentOptions,
1212
FunctionalComponentOptions,
1313
RenderContext,
14-
// PropType,
15-
// PropOptions,
14+
PropType,
15+
PropOptions,
1616
ComputedOptions,
1717
WatchHandler,
1818
WatchOptions,
@@ -52,8 +52,8 @@ export {
5252
ComponentRenderProxy
5353
} from './v3-component-proxy'
5454
export {
55-
PropType,
56-
PropOptions,
55+
// PropType,
56+
// PropOptions,
5757
ExtractPropTypes,
5858
ExtractDefaultPropTypes
5959
} from './v3-component-props'

Diff for: types/options.d.ts

+13-1
Original file line numberDiff line numberDiff line change
@@ -250,10 +250,22 @@ export interface RenderContext<Props = DefaultProps> {
250250
injections: any
251251
}
252252

253-
import { PropOptions, PropType } from './v3-component-props'
253+
export type Prop<T> =
254+
| { (): T }
255+
| { new (...args: never[]): T & object }
256+
| { new (...args: string[]): Function }
257+
258+
export type PropType<T> = Prop<T> | Prop<T>[]
254259

255260
export type PropValidator<T> = PropOptions<T> | PropType<T>
256261

262+
export interface PropOptions<T = any> {
263+
type?: PropType<T>
264+
required?: boolean
265+
default?: T | null | undefined | (() => T | null | undefined)
266+
validator?(value: unknown): boolean
267+
}
268+
257269
export type RecordPropsDefinition<T> = {
258270
[K in keyof T]: PropValidator<T[K]>
259271
}

Diff for: types/test/v3/setup-test.ts

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import Vue, { defineComponent } from '../../index'
1+
import Vue, { defineComponent, PropType } from '../../index'
22

33
// object props
44
Vue.extend({
@@ -78,3 +78,18 @@ defineComponent({
7878
}
7979
}
8080
})
81+
82+
defineComponent({
83+
props: {
84+
foo: null as any as PropType<{ a: number }>
85+
},
86+
data() {
87+
this.foo?.a
88+
},
89+
setup(props) {
90+
const res = props.foo?.a.toFixed(2)
91+
// @ts-expect-error
92+
res.charAt(1)
93+
res?.charAt(1)
94+
}
95+
})

Diff for: types/v3-component-props.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ export interface PropOptions<T = any, D = T> {
2222
export type PropType<T> = PropConstructor<T> | PropConstructor<T>[]
2323

2424
type PropConstructor<T> =
25-
| { new (...args: any[]): T & object }
2625
| { (): T }
26+
| { new (...args: never[]): T & object }
2727
| { new (...args: string[]): Function }
2828

2929
type RequiredKeys<T> = {

0 commit comments

Comments
 (0)