我的TypeScript类未定义。我怎么修理它?

我的TypeScript类未定义。我怎么修理它?,typescript,class,undefined,Typescript,Class,Undefined,我最近开始冒险进入打字脚本的世界。我的目标是创建一个简单的游戏,同时使用面向对象编程。在开始我的第一个TypeScript项目时,我已经遇到了一个不确定如何解决的问题。有人能帮我吗 这是我第一次开始比赛。正如您所看到的,类“Game”中没有太多内容,但这里的问题是类“Level”导致未定义 以下是级别类: export class Level { private word : string private correctAnswer : string private p

我最近开始冒险进入打字脚本的世界。我的目标是创建一个简单的游戏,同时使用面向对象编程。在开始我的第一个TypeScript项目时,我已经遇到了一个不确定如何解决的问题。有人能帮我吗

这是我第一次开始比赛。正如您所看到的,类“Game”中没有太多内容,但这里的问题是类“Level”导致未定义

以下是级别类:

export class Level {
    private word : string 
    private correctAnswer : string
    private possibilities : string[]
    /* Optional
        private score : number
        private difficulty : number */

    constructor(w : string, c : string, p : string[]) {
        this.word           = w
        this.correctAnswer  = c
        this.possibilities  = p
    }
}


我很确定导出和导入写得很正确,但我可能遗漏了什么。

首先,
从“/Level.js”
导入{Level}看起来是错误的。您应该将TypeScript文件定义为
*.ts
。此外,您应该避免在导入中使用文件扩展名:
import{Level}from./Level'

如@jtbandes所述,
levels
属性未初始化

// game.ts
import { Level } from './level';
export class Game {
  private levels: Level[];
  constructor() {
    this.levels = [];
    const level = new Level(/* ... */);
    this.levels.push(level);
  }
}
或在其定义中初始化“级别”属性。我倾向于反对这种做法,因为我个人喜欢在构造函数中初始化属性,这样可以在构造函数中进行有趣的重载,而不必使用默认属性(轻微的运行时优化)

您的
tsconfig.json
(即
include
array)中可能也有一些错误的配置,但对于实际的TypeScript代码,这些是最突出的

在一边
作为个人风格的选择,我喜欢使用类的大小写来定义类文件,即
Game.ts
Level.ts

此代码有错误tsc在尝试构建代码时没有报告这些错误吗<代码>属性“级别”没有初始值设定项,并且未在构造函数中明确分配。
在分配属性“级别”之前使用。。您需要在某处添加
this.levels=[]
。谢谢您的回答!正如@jtbandes所说,我初始化了levels属性;但这并没有马上解决问题。在网上进一步挖掘之后,我发现在HTML文件中定义javascript src时没有添加type='module'。这为我清除了错误。
// game.ts
import { Level } from './level';
export class Game {
  private levels: Level[];
  constructor() {
    this.levels = [];
    const level = new Level(/* ... */);
    this.levels.push(level);
  }
}
export class Game {
  private levels: Level[] = [];
  // ...
}