Skip to content

Commit

Permalink
chore: fix type tests
Browse files Browse the repository at this point in the history
  • Loading branch information
yyx990803 committed Jun 1, 2022
1 parent 206f8a7 commit ffaf81b
Show file tree
Hide file tree
Showing 8 changed files with 85 additions and 19 deletions.
5 changes: 3 additions & 2 deletions packages/server-renderer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,11 @@
"source-map": "0.5.6"
},
"devDependencies": {
"@types/webpack": "^4.41.32",
"file-loader": "^3.0.1",
"memory-fs": "^0.5.0",
"vue": "file:../..",
"webpack": "^4.46.0",
"file-loader": "^3.0.1"
"webpack": "^4.46.0"
},
"homepage": "https://github.com/vuejs/vue/tree/dev/packages/vue-server-renderer#readme"
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
import Vue, { VNode, VNodeDirective } from '../index'
import VueSSRClientPlugin = require('../../packages/vue-server-renderer/client-plugin')
import VueSSRServerPlugin = require('../../packages/vue-server-renderer/server-plugin')
import webpack = require('webpack')
import Vue, { VNode, VNodeDirective } from '../../../types/index'
import VueSSRClientPlugin from '../client-plugin'
import VueSSRServerPlugin from '../server-plugin'
import webpack from 'webpack'
import { readFileSync } from 'fs'
import {
createRenderer,
createBundleRenderer
} from '../../packages/vue-server-renderer'
import { createRenderer, createBundleRenderer } from '.'

function createApp(context: any) {
return new Vue({
Expand Down
1 change: 1 addition & 0 deletions packages/server-renderer/types/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"moduleResolution": "node",
"strict": true,
"noEmit": true,
"allowSyntheticDefaultImports": true,
"paths": {
"vue": ["../../../types/index.d.ts"]
}
Expand Down
44 changes: 42 additions & 2 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions types/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ export {
ComponentOptions,
FunctionalComponentOptions,
RenderContext,
// PropType,
// PropOptions,
PropType,
PropOptions,
ComputedOptions,
WatchHandler,
WatchOptions,
Expand Down Expand Up @@ -52,8 +52,8 @@ export {
ComponentRenderProxy
} from './v3-component-proxy'
export {
PropType,
PropOptions,
// PropType,
// PropOptions,
ExtractPropTypes,
ExtractDefaultPropTypes
} from './v3-component-props'
Expand Down
14 changes: 13 additions & 1 deletion types/options.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -250,10 +250,22 @@ export interface RenderContext<Props = DefaultProps> {
injections: any
}

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

export type PropType<T> = Prop<T> | Prop<T>[]

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

export interface PropOptions<T = any> {
type?: PropType<T>
required?: boolean
default?: T | null | undefined | (() => T | null | undefined)
validator?(value: unknown): boolean
}

export type RecordPropsDefinition<T> = {
[K in keyof T]: PropValidator<T[K]>
}
Expand Down
17 changes: 16 additions & 1 deletion types/test/v3/setup-test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import Vue, { defineComponent } from '../../index'
import Vue, { defineComponent, PropType } from '../../index'

// object props
Vue.extend({
Expand Down Expand Up @@ -78,3 +78,18 @@ defineComponent({
}
}
})

defineComponent({
props: {
foo: null as any as PropType<{ a: number }>
},
data() {
this.foo?.a
},
setup(props) {
const res = props.foo?.a.toFixed(2)
// @ts-expect-error
res.charAt(1)
res?.charAt(1)
}
})
2 changes: 1 addition & 1 deletion types/v3-component-props.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ export interface PropOptions<T = any, D = T> {
export type PropType<T> = PropConstructor<T> | PropConstructor<T>[]

type PropConstructor<T> =
| { new (...args: any[]): T & object }
| { (): T }
| { new (...args: never[]): T & object }
| { new (...args: string[]): Function }

type RequiredKeys<T> = {
Expand Down

0 comments on commit ffaf81b

Please sign in to comment.