Angular10 在let关键字(angular)声明的范围内取消定义变量

Angular10 在let关键字(angular)声明的范围内取消定义变量,angular10,Angular10,我的场景是,当按下按钮时,它会生成一个json变量以供导出。我使用let关键字创建了JSON类型的局部变量calloutputJson,然后尝试将不存在的键添加到此代码中,如下所示 public generateWorkspace() { let outputJson:JSON; outputJson['xml-workspace'] = this.blocklyComponent.toXml() outputJson['vars-ext'] = this.jsonC

我的场景是,当按下按钮时,它会生成一个json变量以供导出。我使用let关键字创建了JSON类型的局部变量call
outputJson
,然后尝试将不存在的键添加到此代码中,如下所示

  public generateWorkspace() {
    let outputJson:JSON;
    outputJson['xml-workspace'] = this.blocklyComponent.toXml()
    outputJson['vars-ext'] = this.jsonContent['vars-ext'];
    console.log(outputJson)
}
HTML


生成工作区JSON
但是当执行
console.log(outputJson)
时,会抛出一个未定义的错误
outputJson
。 根据我的理解,let关键字allow block scope访问,但这有一个错误,尽管我以前声明过这个变量,甚至在打印它之前输入了一些值

请帮忙

请像下面这样定义outputJson,它将解决您的问题


让outputJson:any={}

这肯定能解决我的问题,谢谢你,先生!但我有一个问题。为什么让outputJson:JSON然后用赋值运算符添加新键不起作用。但是任何数组都能解决问题吗?@G.P在你的问题中,你提到过-我创建了JSON类型的局部变量call outputJson。JSON不是一种类型。它是一个接口,any是typescript中的一种类型。
<div>
    <button (click)="generateWorkspace()">
        Generate Workspace JSON
    </button>
</div>