@@ -207,6 +207,51 @@ ruleTester.run('require-valid-default-prop', rule, {
207207 }
208208 }` ,
209209 parserOptions
210+ } ,
211+ {
212+ filename : 'test.vue' ,
213+ code : `export default Vue.extend({
214+ props: {
215+ foo: {
216+ type: Array as PropType<string[]>,
217+ default: () => []
218+ }
219+ }
220+ });
221+ ` ,
222+ parserOptions : { ecmaVersion : 6 , sourceType : 'module' } ,
223+ parser : require . resolve ( '@typescript-eslint/parser' ) ,
224+ errors : errorMessage ( 'function' )
225+ } ,
226+ {
227+ filename : 'test.vue' ,
228+ code : `export default Vue.extend({
229+ props: {
230+ foo: {
231+ type: Object as PropType<{ [key: number]: number }>,
232+ default: () => {}
233+ }
234+ }
235+ });
236+ ` ,
237+ parserOptions : { ecmaVersion : 6 , sourceType : 'module' } ,
238+ parser : require . resolve ( '@typescript-eslint/parser' ) ,
239+ errors : errorMessage ( 'function' )
240+ } ,
241+ {
242+ filename : 'test.vue' ,
243+ code : `export default Vue.extend({
244+ props: {
245+ foo: {
246+ type: Function as PropType<() => number>,
247+ default: () => 10
248+ }
249+ }
250+ });
251+ ` ,
252+ parserOptions : { ecmaVersion : 6 , sourceType : 'module' } ,
253+ parser : require . resolve ( '@typescript-eslint/parser' ) ,
254+ errors : errorMessage ( 'function' )
210255 }
211256 ] ,
212257
@@ -781,6 +826,51 @@ ruleTester.run('require-valid-default-prop', rule, {
781826 }` ,
782827 parserOptions,
783828 errors : errorMessage ( 'string' )
829+ } ,
830+ {
831+ filename : 'test.vue' ,
832+ code : `export default Vue.extend({
833+ props: {
834+ foo: {
835+ type: Array as PropType<string[]>,
836+ default: []
837+ }
838+ }
839+ });
840+ ` ,
841+ parserOptions : { ecmaVersion : 6 , sourceType : 'module' } ,
842+ parser : require . resolve ( '@typescript-eslint/parser' ) ,
843+ errors : errorMessage ( 'function' )
844+ } ,
845+ {
846+ filename : 'test.vue' ,
847+ code : `export default Vue.extend({
848+ props: {
849+ foo: {
850+ type: Object as PropType<{ [key: number]: number }>,
851+ default: {}
852+ }
853+ }
854+ });
855+ ` ,
856+ parserOptions : { ecmaVersion : 6 , sourceType : 'module' } ,
857+ parser : require . resolve ( '@typescript-eslint/parser' ) ,
858+ errors : errorMessage ( 'function' )
859+ } ,
860+ {
861+ filename : 'test.vue' ,
862+ code : `export default Vue.extend({
863+ props: {
864+ foo: {
865+ type: Function as PropType<() => number>,
866+ default: 10
867+ }
868+ }
869+ });
870+ ` ,
871+ parserOptions : { ecmaVersion : 6 , sourceType : 'module' } ,
872+ parser : require . resolve ( '@typescript-eslint/parser' ) ,
873+ errors : errorMessage ( 'function' )
784874 }
785875 ]
786876} )
0 commit comments