打字稿混淆

时间:2016-07-19 19:32:12

标签: typescript angular

在声明或初始化类

中的数据成员时,以下似乎永远不会起作用
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

2 个答案:

答案 0 :(得分:2)

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

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

export class TextComponent implements OnInit {

    view: string[] = [];        

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

如果您多次声明相同的变量(构造函数中的代码),我没有尝试过,但这样做应该可行。

答案 1 :(得分:0)

在您的代码中:

export class TextComponent implements OnInit {

   let view: string[] = [];  

这是编译错误(语法无效)!检查控制台。

修复

使用类成员初始值设定项的正确语法

export class TextComponent implements OnInit {

   view: string[] = [];  

更多

https://basarat.gitbooks.io/typescript/content/docs/classes.html