2015-05-01 97 views
1

我想在打字稿,方法定義是使用Request包匹配請求選項報頭: -不能在打字稿

export function request(options?: Options, callback?: (error: any, response: any, body: any) => void): Request; 

我有一個問題想匹配的選項報頭。選項和標題定義是: -

export interface Options { 
     url?: string; 
     headers?: Headers; 
     ... 
     ... 

    export interface Headers { 
     [key: string]: any; 
    } 

我的選擇是這樣的: -

var requestOptions = { 
    url: 'https://www.wigglewoowoo.com', 
    method: 'POST', 
    headers: { 
     'Connection': 'close' 
    }, 
    body: returnBody, 
    strictSSL: true, 
    rejectUnauthorized: false, 
    requestCert: true, 
    agent: false 
}; 

我得到一個「是不能分配給類型選項參數」除非我排除了頭。我看不出它有什麼問題?

回答

2

最好的解決辦法是在這裏添加類型註釋(第一行):

var requestOptions: Options = { 
    url: 'https://www.wigglewoowoo.com', 
    method: 'POST', 
    headers: { 
     'Connection': 'close' 
    }, 
    ... ... 

要理解爲什麼,看到this long question/answer about how object literals and index signatures interact(這裏的情況略有不同,但相同的一般問題適用)。

+0

btw ...編譯器怎麼沒有抱怨在頭上需要索引簽名? – mfc

+0

當存在上下文類型時推斷一個。沒有類型註釋,就沒有上下文類型,所以不會出現索引簽名的推斷。 –