11export type ValueType = 'string' | 'boolean' | 'number' ;
22export type DefaultValue = string | boolean | number | undefined ;
33
4- interface TypeMap < D > {
5- string : D extends undefined ? string | undefined : string ;
6- boolean : D extends undefined ? boolean | undefined : boolean ;
7- number : D extends undefined ? number | undefined : number ;
4+ interface TypeMap < Default > {
5+ string : Default extends undefined ? string | undefined : string ;
6+ boolean : Default extends undefined ? boolean | undefined : boolean ;
7+ number : Default extends undefined ? number | undefined : number ;
88}
99
10- type EnvReturn < V extends ValueType , D extends DefaultValue > = TypeMap < D > [ V ] ;
10+ type EnvReturn <
11+ Value extends ValueType ,
12+ Default extends DefaultValue ,
13+ > = TypeMap < Default > [ Value ] ;
1114
1215export class EnvError extends Error {
1316 code : string ;
@@ -19,21 +22,21 @@ export class EnvError extends Error {
1922 }
2023}
2124
22- export function env < V extends ValueType , D extends DefaultValue > (
25+ export function env < Value extends ValueType , Default extends DefaultValue > (
2326 key : string ,
24- valueType : V ,
25- defaultValue ?: D
26- ) : EnvReturn < V , D > {
27+ valueType : Value ,
28+ defaultValue ?: Default
29+ ) : EnvReturn < Value , Default > {
2730 let value = process . env [ key ] ;
2831 if ( typeof value === 'string' ) {
2932 value = value . trim ( ) ;
3033 }
3134 if ( undefined === value || value === '' ) {
32- return defaultValue as EnvReturn < V , D > ;
35+ return defaultValue as EnvReturn < Value , Default > ;
3336 }
3437
3538 if ( valueType === 'string' ) {
36- return value as EnvReturn < V , D > ;
39+ return value as EnvReturn < Value , Default > ;
3740 }
3841
3942 if ( valueType === 'boolean' ) {
@@ -49,7 +52,7 @@ export function env<V extends ValueType, D extends DefaultValue>(
4952 'ERR_ENV_INVALID_BOOLEAN_VALUE'
5053 ) ;
5154 }
52- return booleanValue as EnvReturn < V , D > ;
55+ return booleanValue as EnvReturn < Value , Default > ;
5356 }
5457
5558 if ( valueType === 'number' ) {
@@ -60,7 +63,7 @@ export function env<V extends ValueType, D extends DefaultValue>(
6063 'ERR_ENV_INVALID_NUMBER_VALUE'
6164 ) ;
6265 }
63- return numberValue as EnvReturn < V , D > ;
66+ return numberValue as EnvReturn < Value , Default > ;
6467 }
6568
6669 throw new EnvError (
0 commit comments