]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
chore: use PropertyKey type (#11056)
authortomasvn <nguyenngoct2112@gmail.com>
Thu, 6 Jun 2024 10:23:21 +0000 (12:23 +0200)
committerGitHub <noreply@github.com>
Thu, 6 Jun 2024 10:23:21 +0000 (18:23 +0800)
close #8559

packages/reactivity/src/reactiveEffect.ts
packages/runtime-core/src/apiSetupHelpers.ts
packages/runtime-core/src/compat/global.ts
packages/runtime-core/src/components/KeepAlive.ts
packages/runtime-core/src/helpers/useModel.ts
packages/runtime-core/src/renderer.ts
packages/runtime-core/src/vnode.ts
packages/runtime-dom/src/jsx.ts

index 8e0674e925a60629413e0a5c0227a8cff1d2ee25..8c6301c0819c318f0555654babb66f70372318ad 100644 (file)
@@ -145,7 +145,7 @@ export function trigger(
   resetScheduling()
 }
 
-export function getDepFromReactive(object: any, key: string | number | symbol) {
+export function getDepFromReactive(object: any, key: PropertyKey) {
   const depsMap = targetMap.get(object)
   return depsMap && depsMap.get(key)
 }
index 382bb30b3650aad287905c0001717e32f747a725..486ee637e148ed094e84272e024f60c576d1d199 100644 (file)
@@ -215,7 +215,7 @@ export function defineSlots<
   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> = {
@@ -256,24 +256,24 @@ 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>
index 22f7b5213964513cf9f28106e09fd20f9c26e0ae..f64e7adf210d2be27463fe15da4d2a097c878c88 100644 (file)
@@ -102,11 +102,11 @@ export type CompatVue = Pick<App, 'version' | 'component' | 'directive'> & {
   /**
    * @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.
    */
index e059b892841371aa8c700b1a4c13ab82698f8bef..326c2f95dbb0ba4a7babd7eb81527955b9f31184 100644 (file)
@@ -55,7 +55,7 @@ export interface KeepAliveProps {
   max?: number | string
 }
 
-type CacheKey = string | number | symbol | ConcreteComponent
+type CacheKey = PropertyKey | ConcreteComponent
 type Cache = Map<CacheKey, VNode>
 type Keys = Set<CacheKey>
 
index b2670e576e4298dd0b1e5601383d7a74cb0b4943..f6fbca554a7c5cceb6124e4f7c6bf52c1f939b89 100644 (file)
@@ -7,7 +7,7 @@ import type { NormalizedProps } from '../componentProps'
 import { watchSyncEffect } from '../apiWatch'
 
 export function useModel<
-  M extends string | number | symbol,
+  M extends PropertyKey,
   T extends Record<string, any>,
   K extends keyof T,
 >(props: T, name: K, options?: DefineModelOptions<T[K]>): ModelRef<T[K], M>
index 542341b13e8f5add69e47f976aea54aecad20475..cbb08da7bc710dffd511b8b756204ec733b545bb 100644 (file)
@@ -1908,7 +1908,7 @@ function baseCreateRenderer(
       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)
index d91532fb37701f8d5a04f04ed86bcd43902d7dbc..617bdf7ad58ad0b915a16292f553311d71a8e836 100644 (file)
@@ -112,7 +112,7 @@ export type VNodeHook =
 
 // https://github.com/microsoft/TypeScript/issues/33099
 export type VNodeProps = {
-  key?: string | number | symbol
+  key?: PropertyKey
   ref?: VNodeRef
   ref_for?: boolean
   ref_key?: string
@@ -162,7 +162,7 @@ export interface VNode<
 
   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
index 964d5481d4b54ea07ea076b02e3c0a68e53cf498..0c86434e9c78a4a484be7ddc9f976684819b7fb7 100644 (file)
@@ -1390,7 +1390,7 @@ type EventHandlers<E> = {
 import type { VNodeRef } from '@vue/runtime-core'
 
 export type ReservedProps = {
-  key?: string | number | symbol
+  key?: PropertyKey
   ref?: VNodeRef
   ref_for?: boolean
   ref_key?: string