mirror of
https://github.com/angular/angular.git
synced 2026-09-14 13:54:52 +08:00
fa52b6e906
`inject()` originated as a private API and was made public to support `InjectionToken` factories in Ivy. For code-size and performance reasons, when we code generate `inject()` calls we use a bit field to indicate the various injection modes (optional, skip-self, etc). However, this doesn't make for a very nice public API. This commit introduces an alternative object-based API for options. All 4 flags are supported as `boolean` fields on an options object, and converted to bit flags internally. If TypeScript can prove that `optional` injection is not requested, it can narrow the return type and remove the `null` type. DEPRECATED: The bit field signature of `inject()` has been deprecated, in favor of the new options object. Correspondingly, `InjectFlags` is deprecated as well. Fixes #46251 PR Close #46649