我的 TypeScript class 未定义。我如何解决它?
My TypeScript class is not defined. How do i fix it?
我最近开始涉足 TypeScript 的世界。我的目标是创建一个简单的游戏,同时利用 面向对象编程 。在开始我的第一个 TypeScript 项目时,我已经遇到了一个我不确定如何解决的问题。有人可以帮我吗?
这是我第一个 class 开始的游戏。如您所见,class 'Game' 中没有太多内容,但这里的问题是 class 'Level' 导致 未定义。
import { Level } from "./level.js"
class Game {
private levels : Level[]
constructor() {
//Level 1: using the word 'Bus'
let level1 = new Level("B_s", "u", ["a", "u", "o", "i"])
//Push the first level to an array
this.levels.push(level1)
}
}
new Game()
这是等级class:
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
}
}
我很确定导出和导入的记录是正确的,但我可能漏掉了什么。
首先,import { Level } from "./level.js"
看起来不对。您应该将 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);
}
}
或在其定义中初始化关卡属性。我倾向于反对这一点,因为就个人而言,我喜欢在构造函数中初始化属性,这允许在构造函数中进行有趣的重载,而无需 属性 具有默认值(轻微的 运行-time 优化)。
export class Game {
private levels: Level[] = [];
// ...
}
您的 tsconfig.json
(即 include
数组)中可能还有一些错误的配置,但对于实际的 TypeScript 代码,这些是最突出的事情。
旁白
作为个人风格的选择,我喜欢用 class 的大小写来定义 class 文件,即 Game.ts
和 Level.ts
。
我最近开始涉足 TypeScript 的世界。我的目标是创建一个简单的游戏,同时利用 面向对象编程 。在开始我的第一个 TypeScript 项目时,我已经遇到了一个我不确定如何解决的问题。有人可以帮我吗?
这是我第一个 class 开始的游戏。如您所见,class 'Game' 中没有太多内容,但这里的问题是 class 'Level' 导致 未定义。
import { Level } from "./level.js"
class Game {
private levels : Level[]
constructor() {
//Level 1: using the word 'Bus'
let level1 = new Level("B_s", "u", ["a", "u", "o", "i"])
//Push the first level to an array
this.levels.push(level1)
}
}
new Game()
这是等级class:
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
}
}
我很确定导出和导入的记录是正确的,但我可能漏掉了什么。
首先,import { Level } from "./level.js"
看起来不对。您应该将 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);
}
}
或在其定义中初始化关卡属性。我倾向于反对这一点,因为就个人而言,我喜欢在构造函数中初始化属性,这允许在构造函数中进行有趣的重载,而无需 属性 具有默认值(轻微的 运行-time 优化)。
export class Game {
private levels: Level[] = [];
// ...
}
您的 tsconfig.json
(即 include
数组)中可能还有一些错误的配置,但对于实际的 TypeScript 代码,这些是最突出的事情。
旁白
作为个人风格的选择,我喜欢用 class 的大小写来定义 class 文件,即 Game.ts
和 Level.ts
。