From bb7e948bdef92a4e729abe96b0d4e580f07bedb6 Mon Sep 17 00:00:00 2001 From: Matthieu Riegler Date: Tue, 11 Mar 2025 17:51:44 +0100 Subject: [PATCH] refactor(core): Add recommendation for string tokens on `@Inject` (#60326) While still being supported because of ngUpgrade, string tokens are not recommended. Developers should use InjectionTokens or classes as tokens instead. PR Close #60326 --- goldens/public-api/core/index.api.md | 3 +++ packages/core/src/di/metadata.ts | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/goldens/public-api/core/index.api.md b/goldens/public-api/core/index.api.md index e54b6825610..f0dfad1548c 100644 --- a/goldens/public-api/core/index.api.md +++ b/goldens/public-api/core/index.api.md @@ -905,8 +905,11 @@ export interface InjectableType extends Type { // @public export interface InjectDecorator { + (token: string): any; (token: any): any; // (undocumented) + new (token: string): Inject; + // (undocumented) new (token: any): Inject; } diff --git a/packages/core/src/di/metadata.ts b/packages/core/src/di/metadata.ts index 40cd31e2e57..277be8fec59 100644 --- a/packages/core/src/di/metadata.ts +++ b/packages/core/src/di/metadata.ts @@ -17,6 +17,14 @@ import {DecoratorFlags, InternalInjectFlags} from './interface/injector'; * @publicApi */ export interface InjectDecorator { + /** + * Warning: String tokens are not recommended. + * + * Use an InjectionToken or a class as a token instead. + */ + (token: string): any; + new (token: string): Inject; + /** * Parameter decorator on a dependency parameter of a class constructor * that specifies a custom provider of the dependency.