@@ -45,7 +45,7 @@ export class HttpHeaders {
4545
4646 /** Constructs a new HTTP header object with the given values.*/
4747
48- constructor ( headers ?: string | { [ name : string ] : string | string [ ] } ) {
48+ constructor ( headers ?: string | { [ name : string ] : string | number | ( string | number ) [ ] } ) {
4949 if ( ! headers ) {
5050 this . headers = new Map < string , string [ ] > ( ) ;
5151 } else if ( typeof headers === 'string' ) {
@@ -72,14 +72,20 @@ export class HttpHeaders {
7272 assertValidHeaders ( headers ) ;
7373 }
7474 this . headers = new Map < string , string [ ] > ( ) ;
75- Object . keys ( headers ) . forEach ( name => {
76- let values : string | string [ ] = headers [ name ] ;
77- const key = name . toLowerCase ( ) ;
75+ Object . entries ( headers ) . forEach ( ( [ name , values ] ) => {
76+ let headerValues : string [ ] ;
77+
7878 if ( typeof values === 'string' ) {
79- values = [ values ] ;
79+ headerValues = [ values ] ;
80+ } else if ( typeof values === 'number' ) {
81+ headerValues = [ values . toString ( ) ] ;
82+ } else {
83+ headerValues = values . map ( ( value ) => value . toString ( ) ) ;
8084 }
81- if ( values . length > 0 ) {
82- this . headers . set ( key , values ) ;
85+
86+ if ( headerValues . length > 0 ) {
87+ const key = name . toLowerCase ( ) ;
88+ this . headers . set ( key , headerValues ) ;
8389 this . maybeSetNormalizedName ( name , key ) ;
8490 }
8591 } ) ;
@@ -264,16 +270,16 @@ export class HttpHeaders {
264270
265271/**
266272 * Verifies that the headers object has the right shape: the values
267- * must be either strings or arrays. Throws an error if an invalid
273+ * must be either strings, numbers or arrays. Throws an error if an invalid
268274 * header value is present.
269275 */
270276function assertValidHeaders ( headers : Record < string , unknown > ) :
271- asserts headers is Record < string , string | string [ ] > {
277+ asserts headers is Record < string , string | string [ ] | number | number [ ] > {
272278 for ( const [ key , value ] of Object . entries ( headers ) ) {
273- if ( typeof value !== 'string' && ! Array . isArray ( value ) ) {
279+ if ( ! ( typeof value === 'string' || typeof value === 'number' ) && ! Array . isArray ( value ) ) {
274280 throw new Error (
275281 `Unexpected value of the \`${ key } \` header provided. ` +
276- `Expecting either a string or an array, but got: \`${ value } \`.` ) ;
282+ `Expecting either a string, a number or an array, but got: \`${ value } \`.` ) ;
277283 }
278284 }
279285}
0 commit comments