File tree Expand file tree Collapse file tree 2 files changed +42
-0
lines changed Expand file tree Collapse file tree 2 files changed +42
-0
lines changed Original file line number Diff line number Diff line change @@ -265,6 +265,27 @@ describe('resolveType', () => {
265265 } )
266266 } )
267267
268+ test ( 'utility type: ReadonlyArray' , ( ) => {
269+ expect (
270+ resolve ( `
271+ defineProps<{ foo: ReadonlyArray<string> }>()
272+ ` ) . props ,
273+ ) . toStrictEqual ( {
274+ foo : [ 'Array' ] ,
275+ } )
276+ } )
277+
278+ test ( 'utility type: ReadonlyMap & Readonly Set' , ( ) => {
279+ expect (
280+ resolve ( `
281+ defineProps<{ foo: ReadonlyMap<string, unknown>, bar: ReadonlySet<string> }>()
282+ ` ) . props ,
283+ ) . toStrictEqual ( {
284+ foo : [ 'Map' ] ,
285+ bar : [ 'Set' ] ,
286+ } )
287+ } )
288+
268289 test ( 'indexed access type (literal)' , ( ) => {
269290 expect (
270291 resolve ( `
@@ -416,6 +437,16 @@ describe('resolveType', () => {
416437 } )
417438 } )
418439
440+ test ( 'readonly' , ( ) => {
441+ expect (
442+ resolve ( `
443+ defineProps<{ foo: readonly unknown[] }>()
444+ ` ) . props ,
445+ ) . toStrictEqual ( {
446+ foo : [ 'Array' ] ,
447+ } )
448+ } )
449+
419450 test ( 'ExtractPropTypes (element-plus)' , ( ) => {
420451 const { props, raw } = resolve (
421452 `
Original file line number Diff line number Diff line change @@ -1547,8 +1547,14 @@ export function inferRuntimeType(
15471547
15481548 case 'Parameters' :
15491549 case 'ConstructorParameters' :
1550+ case 'ReadonlyArray' :
15501551 return [ 'Array' ]
15511552
1553+ case 'ReadonlyMap' :
1554+ return [ 'Map' ]
1555+ case 'ReadonlySet' :
1556+ return [ 'Set' ]
1557+
15521558 case 'NonNullable' :
15531559 if ( node . typeParameters && node . typeParameters . params [ 0 ] ) {
15541560 return inferRuntimeType (
@@ -1633,6 +1639,11 @@ export function inferRuntimeType(
16331639 }
16341640 break
16351641 }
1642+
1643+ // e.g. readonly
1644+ case 'TSTypeOperator' : {
1645+ return inferRuntimeType ( ctx , node . typeAnnotation , scope )
1646+ }
16361647 }
16371648 } catch ( e ) {
16381649 // always soft fail on failed runtime type inference
You can’t perform that action at this time.
0 commit comments