return null as any
}
-export type ModelRef<T, M extends string | number | symbol = string> = Ref<T> &
+export type ModelRef<T, M extends PropertyKey = string> = Ref<T> &
[ModelRef<T, M>, Record<M, true | undefined>]
export type DefineModelOptions<T = any> = {
* const count = defineModel<number>('count', { default: 0 })
* ```
*/
-export function defineModel<T, M extends string | number | symbol = string>(
+export function defineModel<T, M extends PropertyKey = string>(
options: { required: true } & PropOptions<T> & DefineModelOptions<T>,
): ModelRef<T, M>
-export function defineModel<T, M extends string | number | symbol = string>(
+export function defineModel<T, M extends PropertyKey = string>(
options: { default: any } & PropOptions<T> & DefineModelOptions<T>,
): ModelRef<T, M>
-export function defineModel<T, M extends string | number | symbol = string>(
+export function defineModel<T, M extends PropertyKey = string>(
options?: PropOptions<T> & DefineModelOptions<T>,
): ModelRef<T | undefined, M>
-export function defineModel<T, M extends string | number | symbol = string>(
+export function defineModel<T, M extends PropertyKey = string>(
name: string,
options: { required: true } & PropOptions<T> & DefineModelOptions<T>,
): ModelRef<T, M>
-export function defineModel<T, M extends string | number | symbol = string>(
+export function defineModel<T, M extends PropertyKey = string>(
name: string,
options: { default: any } & PropOptions<T> & DefineModelOptions<T>,
): ModelRef<T, M>
-export function defineModel<T, M extends string | number | symbol = string>(
+export function defineModel<T, M extends PropertyKey = string>(
name: string,
options?: PropOptions<T> & DefineModelOptions<T>,
): ModelRef<T | undefined, M>
/**
* @deprecated Vue 3 no longer needs set() for adding new properties.
*/
- set(target: any, key: string | number | symbol, value: any): void
+ set(target: any, key: PropertyKey, value: any): void
/**
* @deprecated Vue 3 no longer needs delete() for property deletions.
*/
- delete(target: any, key: string | number | symbol): void
+ delete(target: any, key: PropertyKey): void
/**
* @deprecated use `reactive` instead.
*/
const s2 = i // next starting index
// 5.1 build key:index map for newChildren
- const keyToNewIndexMap: Map<string | number | symbol, number> = new Map()
+ const keyToNewIndexMap: Map<PropertyKey, number> = new Map()
for (i = s2; i <= e2; i++) {
const nextChild = (c2[i] = optimized
? cloneIfMounted(c2[i] as VNode)
// https://github.com/microsoft/TypeScript/issues/33099
export type VNodeProps = {
- key?: string | number | symbol
+ key?: PropertyKey
ref?: VNodeRef
ref_for?: boolean
ref_key?: string
type: VNodeTypes
props: (VNodeProps & ExtraProps) | null
- key: string | number | symbol | null
+ key: PropertyKey | null
ref: VNodeNormalizedRef | null
/**
* SFC only. This is assigned on vnode creation using currentScopeId