chore: update types
							parent
							
								
									5526e19349
								
							
						
					
					
						commit
						dffb0cce52
					
				|  | @ -1 +1 @@ | |||
| Subproject commit 79d49c0ff31a4f505ccd5bc3ad238c08f9925212 | ||||
| Subproject commit 83ab203d1ab9861132f6efd1e74015507c0e45f6 | ||||
|  | @ -2,16 +2,17 @@ import { isVNode, Fragment, Comment, Text, h, VNode, ComponentPublicInstance, Sl | |||
| import isPlainObject from 'lodash-es/isPlainObject'; | ||||
| import { camelize, hyphenate, isOn, resolvePropValue } from './util'; | ||||
| import isValid from './isValid'; | ||||
| import { Data, PropOptions } from './type'; | ||||
| // function getType(fn) {
 | ||||
| //   const match = fn && fn.toString().match(/^\s*function (\w+)/);
 | ||||
| //   return match ? match[1] : '';
 | ||||
| // }
 | ||||
| 
 | ||||
| const splitAttrs = attrs => { | ||||
| const splitAttrs = (attrs: Data) => { | ||||
|   const allAttrs = Object.keys(attrs); | ||||
|   const eventAttrs = {}; | ||||
|   const onEvents = {}; | ||||
|   const extraAttrs = {}; | ||||
|   const eventAttrs: Data = {}; | ||||
|   const onEvents: Data = {}; | ||||
|   const extraAttrs: Data = {}; | ||||
|   for (let i = 0, l = allAttrs.length; i < l; i++) { | ||||
|     const key = allAttrs[i]; | ||||
|     if (isOn(key)) { | ||||
|  | @ -23,8 +24,8 @@ const splitAttrs = attrs => { | |||
|   } | ||||
|   return { onEvents, events: eventAttrs, extraAttrs }; | ||||
| }; | ||||
| const parseStyleText = (cssText = '', camel) => { | ||||
|   const res = {}; | ||||
| const parseStyleText = (cssText = '', camel: boolean) => { | ||||
|   const res: Record<string, string> = {}; | ||||
|   const listDelimiter = /;(?![^(]*\))/g; | ||||
|   const propertyDelimiter = /:(.+)/; | ||||
|   cssText.split(listDelimiter).forEach(function(item) { | ||||
|  | @ -39,7 +40,7 @@ const parseStyleText = (cssText = '', camel) => { | |||
|   return res; | ||||
| }; | ||||
| 
 | ||||
| const hasProp = (instance: VNode, prop: string) => { | ||||
| const hasProp = (instance: ComponentPublicInstance, prop: string) => { | ||||
|   return prop in getOptionProps(instance); | ||||
| }; | ||||
| // 重构后直接使用 hasProp 替换
 | ||||
|  | @ -288,7 +289,7 @@ export function getEvents(ele = {}, on = true) { | |||
|   return splitAttrs(props)[on ? 'onEvents' : 'events']; | ||||
| } | ||||
| 
 | ||||
| export function getEvent(child, event) { | ||||
| export function getEvent(child: VNode, event: string) { | ||||
|   return child.props && child.props[event]; | ||||
| } | ||||
| 
 | ||||
|  | @ -374,10 +375,10 @@ export function filterEmpty(children: VNode[] = []) { | |||
| } | ||||
| const initDefaultProps = <T>( | ||||
|   propTypes: T, | ||||
|   defaultProps: { [K in Extract<keyof T, string>]?: any }, | ||||
|   defaultProps: { [K in Extract<keyof T, string>]?: T[K] }, | ||||
| ): T => { | ||||
|   Object.keys(defaultProps).forEach((k: Extract<keyof T, string>) => { | ||||
|     const prop = propTypes[k] as PropOptions<any>; | ||||
|     const prop = propTypes[k] as PropOptions; | ||||
|     if (prop) { | ||||
|       prop.default = defaultProps[k]; | ||||
|     } else { | ||||
|  |  | |||
|  | @ -1,3 +1,5 @@ | |||
| import { PropType } from 'vue'; | ||||
| 
 | ||||
| export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>; | ||||
| // https://stackoverflow.com/questions/46176165/ways-to-get-string-literal-type-of-array-values-without-enum-overhead
 | ||||
| export const tuple = <T extends string[]>(...args: T) => args; | ||||
|  | @ -20,3 +22,13 @@ export type StringKeyOf<T> = Extract<keyof T, string>; | |||
| export type EventHandlers<E> = { | ||||
|   [K in StringKeyOf<E>]?: E[K] extends Function ? E[K] : (payload: E[K]) => void; | ||||
| }; | ||||
| 
 | ||||
| export type Data = Record<string, unknown>; | ||||
| 
 | ||||
| export declare type DefaultFactory<T> = (props: Data) => T | null | undefined; | ||||
| export declare interface PropOptions<T = any, D = T> { | ||||
|   type?: PropType<T> | true | null; | ||||
|   required?: boolean; | ||||
|   default?: D | DefaultFactory<D> | null | undefined | object; | ||||
|   validator?(value: unknown): boolean; | ||||
| } | ||||
|  |  | |||
|  | @ -33,7 +33,7 @@ export const noop = () => {}; | |||
|  * @param {object} obj - Object | ||||
|  * @param {string} prop - Property to check | ||||
|  */ | ||||
| export const has = (obj: any, prop: any) => hasOwn.call(obj, prop); | ||||
| export const has = (obj: object, prop: string) => hasOwn.call(obj, prop); | ||||
| 
 | ||||
| /** | ||||
|  * Determines whether the passed value is an integer. Uses `Number.isInteger` if available | ||||
|  | @ -66,7 +66,8 @@ export const isArray = | |||
|  * @param {any} value - Value to check | ||||
|  * @returns {boolean} | ||||
|  */ | ||||
| export const isFunction = (value: any) => toString.call(value) === '[object Function]'; | ||||
| export const isFunction = (value: unknown): value is Function => | ||||
|   toString.call(value) === '[object Function]'; | ||||
| 
 | ||||
| /** | ||||
|  * Adds a `def` method to the object returning a new object with passed in argument as `default` property | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Amour1688
						Amour1688