]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(types): allow using InjectionKey as valid property key
authorEvan You <evan@vuejs.org>
Fri, 2 Aug 2024 03:11:03 +0000 (11:11 +0800)
committerEvan You <evan@vuejs.org>
Fri, 2 Aug 2024 03:11:03 +0000 (11:11 +0800)
close #5089

packages/dts-test/inject.test-d.ts
packages/runtime-core/src/apiInject.ts

index 2e8341ff0aef524fd21068ad08fe07c12ac37226..e545ef623d0fc363d6662633fc8224d9592802db 100644 (file)
@@ -2,6 +2,7 @@ import {
   type InjectionKey,
   type Ref,
   createApp,
+  defineComponent,
   inject,
   provide,
   ref,
@@ -52,3 +53,9 @@ provide<Cube>(123, { size: 'foo' })
 const app = createApp({})
 // @ts-expect-error
 app.provide(injectionKeyRef, ref({}))
+
+defineComponent({
+  provide: {
+    [injectionKeyRef]: { size: 'foo' },
+  },
+})
index f15983604bb3c2b78607f6cbba27a906a0331023..06d39b61a4dca619ede6da9ca2f0935b6980b577 100644 (file)
@@ -4,7 +4,9 @@ import { currentRenderingInstance } from './componentRenderContext'
 import { currentApp } from './apiCreateApp'
 import { warn } from './warning'
 
-export interface InjectionKey<T> extends Symbol {}
+interface InjectionConstraint<T> {}
+
+export type InjectionKey<T> = symbol & InjectionConstraint<T>
 
 export function provide<T, K = InjectionKey<T> | string | number>(
   key: K,