无法为打字稿字典赋值
Unable to assign value to typescript dictionary
我创建了一个打字稿字典。当我为它赋值时,出现以下错误。
TypeError: Cannot set property 'v1/items/someItemType/someItemId/EVENT/some
DataTypeId' of undefined
at MainClass.subscribe (G:'Projects'src'main'MainClass
.js:9:3522)
at Context.<anonymous> (G:'Projects'test'main'Wish.
spec.js:45:18)
at callFn (G:'Projects'node_modules'mocha'lib'runna
ble.js:315:21)
at Hook.Runnable.run (G:'Projects'node_modules'moch
a'lib'runnable.js:308:7)
at next (G:'Projects'node_modules'mocha'lib'runner.
js:298:10)
at Immediate._onImmediate (G:'Projects'node_modules
'mocha'lib'runner.js:320:5)
以下是我声明字典的方式。
interface StringTopicToMyTopicMap {
[topic: string]: MyTopic;
};
下面是MyTopic的界面。
export interface MyTopic {
dataTypeID: string;
itemID: string;
itemType: string;
dataType: MyDataType;
qos: number;
}
然后我尝试为这个字典分配值,如下所示。
private subscriptionTopicsMap: StringTopicToMyTopicMap;
subscribe(myTopic: MyTopic) {
if (_.isEmpty(myTopic)) {
throw new MyError('myTopic cannot be empty');
} else {
let topic: string;
topic = 'v1/items/' + myTopic.itemType + '/' + myTopic.itemID + '/'
+ myTopic.dataType + '/' + myTopic.dataTypeID;
this.subscriptionTopicsMap[topic] = myTopic;
this.client.subscribe(topic);
}
}
错误从行中抛出,
this.subscriptionTopicsMap[topic] = myTopic;
我是打字稿的新手。我在这里做错了什么?请指教。
我通常以更简单的方式执行此操作,不需要第二个界面。同样作为之前的答案,您将需要如下={}
:
private subscriptionTopicsMap: { [id: string]: MyTopic; } = {};
this.subscriptionTopicsMap[topic] = myTopic;
只需在声明时初始化您的属性
//private subscriptionTopicsMap: StringTopicToMyTopicMap;
private subscriptionTopicsMap: StringTopicToMyTopicMap = {};
您尚未初始化subscriptionTopicsMap
字典,此外,您没有任何实现StringTopicToMyTopicMap
的类,并且可以实例化
class StringTopicToMyTopicMapClass implements StringTopicToMyTopicMap {
[topic: string]: MyTopic;
};
private subscriptionTopicsMap: StringTopicToMyTopicMap = new StringTopicToMyTopicMapClass ();
相关文章:
- Javascript变量赋值|
- 无法为打字稿字典赋值
- Javascript-根据赋值顺序,按键合并对象数组
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何通过json对象数组为嵌套对象赋值
- 赋值后的回调函数
- ||(OR)运算符如何在赋值中工作
- 可以使用属性赋值实现多个函数
- 将ECMAScript 6析构函数赋值(ES2015)重构为旧版本的javascript
- 如何在javascript中为全局变量赋值
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- JavaScript:在嵌套循环中为数组赋值
- 未设置变量的赋值| jQuery的作用是什么
- Javascript赋值运算符的奇怪行为
- onchange赋值的Javascript位置
- 我可以在javascript中的回调函数中为变量赋值吗
- 逻辑(JSint友好)等效于while循环中的此赋值
- 为数组元素的属性赋值将设置所有其他类似元素的属性
- 错误-应为赋值或函数调用,但实际看到的却是表达式
- 错误:与指令一起使用的表达式“未定义”不可赋值