另一个新手TypeScript错误“TypeError:无法设置属性'3'未定义”
问题描述:
我认为这是创建转换数组的问题,但我不明白为什么!另一个新手TypeScript错误“TypeError:无法设置属性'3'未定义”
类文本
export enum STATE_ID { CGU, Initial, Previous, Question}
export enum CHOICE_ID {CGU_accepted, CGU_not_accepted}
export class STATE_MACHINE {
constructor (context: string) {
this.transitions_initialize()
}
put_transition (source: STATE_ID, target: STATE_ID, label: CHOICE_ID): void
{console.log(this.transitions.length.toString)
this.transitions[source][label] = target
}
private transitions: STATE_ID[][] = new Array()
private transitions_initialize(): void {
this.put_transition(STATE_ID.Initial, STATE_ID.Question,
CHOICE_ID.CGU_accepted)
this.put_transition(STATE_ID.Initial, STATE_ID.CGU,
CHOICE_ID.CGU_not_accepted)
}
}
new STATE_MACHINE("test")
错误
[Function: toString]
Z:\Documents\Phi\Developpement\TypeScript\test3\state_machine.js:45
this.transitions[source][label] = target;
^
TypeError: Cannot set property '3' of undefined
at STATE_MACHINE.put_transition (Z:\Docum................
任何想法?
答
在TypeScript/JavaScript中使用多维数组之前,您需要初始化每个元素。当你这样做:
private transitions: STATE_ID[][] = new Array()
你已经创建transitions
为空阵列。它不包含任何元素。每个元素应该是STATE_ID[]
类型。如果你想要这样的元素存在,你必须先创建它。例如:
put_transition (source: STATE_ID, target: STATE_ID, label: CHOICE_ID): void {
if (!this.transitions[source]) {
this.transitions[source] = new Array()
}
this.transitions[source][label] = target
}
这应该测试导致您出现问题的情况。
希望有帮助;祝你好运!
太棒了!谢谢 ! – carella