2015-05-01 63 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

当存在上下文类型时推断一个。没有类型注释,就没有上下文类型,所以不会出现索引签名的推断。 –