[Feature proposal] Use .d.ts as schema for type safety#38
Open
lhhong wants to merge 1 commit intokeithmorris:developfrom
Open
[Feature proposal] Use .d.ts as schema for type safety#38lhhong wants to merge 1 commit intokeithmorris:developfrom
lhhong wants to merge 1 commit intokeithmorris:developfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.envwill be present.Existing solutions are not as great. We could litter the typescript code with
if KEY !== undefinedor with!!operator but risk having typographical errors. Havingprocess.envtype 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.