打字稿字典无法执行

时间:2016-11-14 10:07:21

标签: typescript typescript2.0

对于"字典"我有一个非常简单的Typescript定义。看起来像这样:

interface IDictionary<T> {
  [key: string]: T;
}

然后我在另一个接口定义中使用此接口,如下所示:

interface IGatewayInput {
  queryParameters: IDictionary<string>;
  body?: string;
}

然后我有一个接收IGatewayInput

的函数
doSomething( input: IGatewayInput ) {
  if(input.queryParameters.oauth_token) {
    // ....
  }
} 

但我希望字典允许&#34; queryParameters&#34;有任何键值我反而得到以下错误:

  

错误TS2339:属性&#39; oauth_token&#39;类型&#39; IDictionary&#39;。&#39;

上不存在

我做错了什么?我以为我的定义会允许任何基于字符串的键值?

2 个答案:

答案 0 :(得分:1)

您定义了一个可用作数组索引器的“可索引类型”(typescript reference):

if (input.queryParameters['oauth_token']) {
    //...
}

答案 1 :(得分:0)

由于你可以修改你的字典运行时,我认为你没有任何方法可以静态编译它(即编译器不会知道这个属性存在)。

我认为您应该使用特定的接口/类或any来执行此操作。