From edbb4de95dde261fa5540dc4425d82d74bfa8cef Mon Sep 17 00:00:00 2001 From: Madhukar Kedlaya Date: Fri, 16 Jun 2017 10:21:58 -0700 Subject: [PATCH] Creating a separate interface for IncomingMessageHeaders in node/index.d.ts (#17157) * Creating a separate interface for IncomingMessageHeaders This allows for IncomingMessage.headers types to be extensible per project. Suppose a node service expects a fixed set of headers of certain type (say string), that service can specify custom IncomingMessageHeaders with more concrete types defined. For example ``` interface IncomingMessageHeaders { "host": string; "set-cookie": string[] } ``` * Changing IncomingMessageHeaders defn This definition adds undefined in addition to string and string[]. --- types/node/index.d.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/types/node/index.d.ts b/types/node/index.d.ts index 178a8920e1..580769b975 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -804,12 +804,15 @@ declare module "http" { end(str: string, encoding?: string, cb?: Function): void; end(data?: any, encoding?: string): void; } + export interface IncomingMessageHeaders { + [key: string]: string | string[] | undefined; + } export interface IncomingMessage extends stream.Readable { httpVersion: string; httpVersionMajor: number; httpVersionMinor: number; connection: net.Socket; - headers: { [key: string]: string | string[] }; + headers: IncomingMessageHeaders; rawHeaders: string[]; trailers: { [key: string]: string }; rawTrailers: string[];