打字稿混乱

分享于2023年03月15日 angular typescript 问答
【问题标题】:Typescript confusion打字稿混乱
【发布时间】:2023-03-14 09:00:01
【问题描述】:

在类中声明或初始化数据成员时,以下内容似乎永远不会起作用

var view: string[];
var view: string[] = [];
let view: string[];
let view: string[] = [];

尽管打字稿文档说它应该

https://www.typescriptlang.org/docs/handbook/basic-types.html https://www.typescriptlang.org/docs/tutorial.html

如果我这样做了

view: string[];

constructor() {
    this.view = [];
}

一切都很好。

谁能解释一下原因

export class TextComponent implements OnInit {

   let view: string[] = [];        

    ngOnInit() {
    ....
    }
}

或任何前面提到的变体总是会导致错误

ngOnInit is not defined


【解决方案1】:

您不能将任意代码放在类的顶层。您需要将其放在构造函数或方法中。

在构造函数或方法之外只允许声明字段和方法。

export class TextComponent implements OnInit {

    view: string[] = [];        

    constructor() {
      var view: string[];
      var view: string[] = [];
      let view: string[];
      let view: string[] = [];
    }    
    ngOnInit() {
    ....
    }
}

我没有尝试过多次声明同一个变量(构造函数中的代码),否则这样应该可以工作。

【讨论】: