@@ -12,8 +12,11 @@ app.use(PluginWithoutType, 2)
12
12
app . use ( PluginWithoutType , { anything : 'goes' } , true )
13
13
14
14
type PluginOptions = {
15
+ /** option1 */
15
16
option1 ?: string
17
+ /** option2 */
16
18
option2 : number
19
+ /** option3 */
17
20
option3 : boolean
18
21
}
19
22
@@ -25,6 +28,20 @@ const PluginWithObjectOptions = {
25
28
} ,
26
29
}
27
30
31
+ const objectPluginOptional = {
32
+ install ( app : App , options ?: PluginOptions ) { } ,
33
+ }
34
+ app . use ( objectPluginOptional )
35
+ app . use (
36
+ objectPluginOptional ,
37
+ // Test JSDoc and `go to definition` for options
38
+ {
39
+ option1 : 'foo' ,
40
+ option2 : 1 ,
41
+ option3 : true ,
42
+ } ,
43
+ )
44
+
28
45
for ( const Plugin of [
29
46
PluginWithObjectOptions ,
30
47
PluginWithObjectOptions . install ,
@@ -92,7 +109,27 @@ const PluginTyped: Plugin<PluginOptions> = (app, options) => {}
92
109
93
110
// @ts -expect-error: needs options
94
111
app . use ( PluginTyped )
95
- app . use ( PluginTyped , { option2 : 2 , option3 : true } )
112
+ app . use (
113
+ PluginTyped ,
114
+ // Test autocomplete for options
115
+ {
116
+ option1 : '' ,
117
+ option2 : 2 ,
118
+ option3 : true ,
119
+ } ,
120
+ )
121
+
122
+ const functionPluginOptional = ( app : App , options ?: PluginOptions ) => { }
123
+ app . use ( functionPluginOptional )
124
+ app . use ( functionPluginOptional , { option2 : 2 , option3 : true } )
125
+
126
+ // type optional params
127
+ const functionPluginOptional2 : Plugin < [ options ?: PluginOptions ] > = (
128
+ app ,
129
+ options ,
130
+ ) => { }
131
+ app . use ( functionPluginOptional2 )
132
+ app . use ( functionPluginOptional2 , { option2 : 2 , option3 : true } )
96
133
97
134
// vuetify usage
98
135
const key : string = ''
0 commit comments