fix(types): replace any with unknown in ImportMetaEnv for type safety #19508
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR replaces
[key: string]: any;
with[key: string]: unknown;
inImportMetaEnv
to improve type safety.Using
any
disables TypeScript's type checking, which can lead to unintended runtime errors.By switching to
unknown
, we enforce explicit type handling while maintaining flexibility.If necessary, we can update the documentation in
guide/env-and-mode.md
with helper functions to improve DX, based on Maintainer feedback.Fixes: #19376
What problem does this PR solve?
any
allows invalid operations (e.g.,import.meta.env.VITE_API_URL.at(1)
,import.meta.env.VITE_PORT * 2
).undefined
access issues.unknown
requires explicit type assertions, preventing unintended misuse and improving type safety.Changes
any
withunknown
inImportMetaEnv
(packages/vite/types/importMeta.d.ts
).import.meta.env
.Alternatives considered
any
→ ❌ Weak type safety, potential runtime issues.string | number | boolean | undefined;
→ ❌.env
files store values as strings, making automatic inference unreliable.unknown
(✅ Best approach) → Ensures safety while allowing explicit type handling.Additional context