mirror of https://github.com/vuejs/vue.git
				
				
				
			fix: support prop type checking for primitive wrapper objects (#6450)
close #6447
This commit is contained in:
		
							parent
							
								
									08bc7595fd
								
							
						
					
					
						commit
						679cd1fef4
					
				|  | @ -145,7 +145,12 @@ function assertType (value: any, type: Function): { | ||||||
|   let valid |   let valid | ||||||
|   const expectedType = getType(type) |   const expectedType = getType(type) | ||||||
|   if (simpleCheckRE.test(expectedType)) { |   if (simpleCheckRE.test(expectedType)) { | ||||||
|     valid = typeof value === expectedType.toLowerCase() |     const t = typeof value | ||||||
|  |     valid = t === expectedType.toLowerCase() | ||||||
|  |     // for primitive wrapper objects
 | ||||||
|  |     if (!valid && t === 'object') { | ||||||
|  |       valid = value instanceof type | ||||||
|  |     } | ||||||
|   } else if (expectedType === 'Object') { |   } else if (expectedType === 'Object') { | ||||||
|     valid = isPlainObject(value) |     valid = isPlainObject(value) | ||||||
|   } else if (expectedType === 'Array') { |   } else if (expectedType === 'Array') { | ||||||
|  |  | ||||||
|  | @ -206,6 +206,17 @@ describe('Options props', () => { | ||||||
|       expect('Expected Array').toHaveBeenWarned() |       expect('Expected Array').toHaveBeenWarned() | ||||||
|     }) |     }) | ||||||
| 
 | 
 | ||||||
|  |     it('primitive wrapper objects', () => { | ||||||
|  |       /* eslint-disable no-new-wrappers */ | ||||||
|  |       makeInstance(new String('s'), String) | ||||||
|  |       expect(console.error.calls.count()).toBe(0) | ||||||
|  |       makeInstance(new Number(1), Number) | ||||||
|  |       expect(console.error.calls.count()).toBe(0) | ||||||
|  |       makeInstance(new Boolean(true), Boolean) | ||||||
|  |       expect(console.error.calls.count()).toBe(0) | ||||||
|  |       /* eslint-enable no-new-wrappers */ | ||||||
|  |     }) | ||||||
|  | 
 | ||||||
|     if (hasSymbol) { |     if (hasSymbol) { | ||||||
|       it('symbol', () => { |       it('symbol', () => { | ||||||
|         makeInstance(Symbol('foo'), Symbol) |         makeInstance(Symbol('foo'), Symbol) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue