对于"字典"我有一个非常简单的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;
上不存在
我做错了什么?我以为我的定义会允许任何基于字符串的键值?
答案 0 :(得分:1)
您定义了一个可用作数组索引器的“可索引类型”(typescript reference):
if (input.queryParameters['oauth_token']) {
//...
}
答案 1 :(得分:0)
由于你可以修改你的字典运行时,我认为你没有任何方法可以静态编译它(即编译器不会知道这个属性存在)。
我认为您应该使用特定的接口/类或any
来执行此操作。