【问题标题】: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

【问题讨论】:

    标签: typescript angular


    【解决方案1】:

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

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

    export class TextComponent implements OnInit {
    
        view: string[] = [];        
    
        constructor() {
          var view: string[];
          var view: string[] = [];
          let view: string[];
          let view: string[] = [];
        }    
        ngOnInit() {
        ....
        }
    }
    

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

    【讨论】:

      【解决方案2】:

      在您的代码中:

      export class TextComponent implements OnInit {
      
         let view: string[] = [];  
      

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

      修复

      对类成员初始化器使用正确的语法

      export class TextComponent implements OnInit {
      
         view: string[] = [];  
      

      更多

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

      【讨论】:

        猜你喜欢
        • 2020-01-31
        • 1970-01-01
        • 2018-03-25
        • 2015-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-13
        • 2016-05-08
        相关资源
        最近更新 更多