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
public-api/
This directory contains all of the public api goldens for our npm packages we publish to NPM. These are tested on all PRs and commits as part of our bazel tests.
To check or update the public api goldens, run one of the following commands:
yarn public-api:check
yarn public-api:update
packages-circular-deps.json
This golden file contains a list of all circular dependencies in the project. As part of the lint CI job we compare the current circular dependencies against this golden to ensure that we don't add more cycles. If cycles have been fixed, this file is also updated so that we can slowly burn down the number of cycles in the project.
To check or update the golden, run the following commands:
yarn ts-circular-deps:check
yarn ts-circular-deps:approve