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