[Feature proposal] Use .d.ts as schema for type safety #38
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.
This proposal adds type safety for typescript by providing the ability to use type declarations directly as a schema. With schema checking, we can take advantage of the fact that this library ensures the respective keys in
process.env
will be present.Existing solutions are not as great. We could litter the typescript code with
if KEY !== undefined
or with!!
operator but risk having typographical errors. Havingprocess.env
type declaration facilitates code completion. While we can use a type declaration separate from the schema, being able to have one single source of truth avoids the need to change multiple places.Notes
Breaks: type declaration of IEnvironmentMap changed to
{ [name: string]: string | undefined }
. I believedotenv
's type declaration of{ [name: string]: string }
is a mistake. With this change, it no longer makes sense to carry this mistake down.