child class 的继承放在另一个文件中 (CoffeeScript)
Inheritance of a child class placed in another file (CoffeeScript)
如何使用 CoffeeScript 在不同的文件中正确组织 child classes?这是代码问题的一个简单示例。 Snake 运行得很好,但随后尝试使用 Dog class(因为它被放置在另一个 class 中),它给出了以下错误:
TypeError: Dog is not a constructor
主文件: .test/Animals.coffee
#expect = require "expect.js"
Animal = require "../learning/Animals"
Snake = Animal.Snake
Dog = require "../learning/Dog"
#Dog = Animal.Dog #unresolved variable
describe 'animals', ->
it 'test inheritance', ->
sam = new Snake "Sammy the Python"
peanut = new Dog "Peanut the Dog"
sam.move()
peanut.move()
Parent class: .learning/Animals.咖啡
class Animal
constructor: (@name) ->
move: (meters) ->
console.log(@name + " moved #{meters}m.")
class Snake extends Animal
move: ->
console.log( "Slithering...")
super 5
module.exports = { Animal, Snake }
Child class: .learning/Dog.咖啡
Animal = require './Animals'
class Dog extends Animal
move: ->
console.log( "Runs...")
super 15
module.exports = { Dog }
您正在导出包含 classes:
的对象
module.exports = { Dog }
这相当于
module.exports = {
Dog: Dog
}
您可以解构导入的对象:
{ Dog } = require('./Dog.coffee')
这类似于:
a = require('./Dog.coffee')
Dog = a.Dog
你应该始终如一,始终导出对象,并始终将导入的对象解构为你需要的部分。
或者,我建议给每个 class 一个单独的文件以避免混淆
如何使用 CoffeeScript 在不同的文件中正确组织 child classes?这是代码问题的一个简单示例。 Snake 运行得很好,但随后尝试使用 Dog class(因为它被放置在另一个 class 中),它给出了以下错误:
TypeError: Dog is not a constructor
主文件: .test/Animals.coffee
#expect = require "expect.js"
Animal = require "../learning/Animals"
Snake = Animal.Snake
Dog = require "../learning/Dog"
#Dog = Animal.Dog #unresolved variable
describe 'animals', ->
it 'test inheritance', ->
sam = new Snake "Sammy the Python"
peanut = new Dog "Peanut the Dog"
sam.move()
peanut.move()
Parent class: .learning/Animals.咖啡
class Animal
constructor: (@name) ->
move: (meters) ->
console.log(@name + " moved #{meters}m.")
class Snake extends Animal
move: ->
console.log( "Slithering...")
super 5
module.exports = { Animal, Snake }
Child class: .learning/Dog.咖啡
Animal = require './Animals'
class Dog extends Animal
move: ->
console.log( "Runs...")
super 15
module.exports = { Dog }
您正在导出包含 classes:
的对象module.exports = { Dog }
这相当于
module.exports = {
Dog: Dog
}
您可以解构导入的对象:
{ Dog } = require('./Dog.coffee')
这类似于:
a = require('./Dog.coffee')
Dog = a.Dog
你应该始终如一,始终导出对象,并始终将导入的对象解构为你需要的部分。
或者,我建议给每个 class 一个单独的文件以避免混淆