放置在另一个文件中的子类的继承(CoffeeScript)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了放置在另一个文件中的子类的继承(CoffeeScript)相关的知识,希望对你有一定的参考价值。

如何使用CoffeeScript在不同的文件中正确组织子类?这是代码问题的一个简单示例。 Snake运行得很好,但随后尝试使用Dog类(因为它放在另一个类中),它会出现以下错误:

TypeError:Dog不是构造函数

主文件:.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()

父类:.learning / Animals.coffee

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 }

儿童班:.learning / Dog.coffee

Animal = require './Animals'

class Dog extends Animal
  move: ->
    console.log( "Runs...")
    super 15

module.exports = { Dog }
答案

您正在导出包含类的对象:

module.exports = { Dog }

这相当于

module.exports = {
  Dog: Dog
}

您可以解构导入的对象:

{ Dog } = require('./Dog.coffee')

这类似于:

a = require('./Dog.coffee')
Dog = a.Dog

您应该保持一致并始终导出对象,并始终将导入的对象解构为您需要的那些部分。

或者,我建议给每个类别自己的文件以避免混淆

以上是关于放置在另一个文件中的子类的继承(CoffeeScript)的主要内容,如果未能解决你的问题,请参考以下文章

在另一个程序集中创建 WebPart 子类时出错

如何访问子类中的函数?

调用放置在另一个中的函数

面向对象_5_继承

如何将捆绑从一个活动传递到放置在另一个活动中的片段?

试图从一个 Viewcontroller 中的 UILabel 获取 NSString 以放置在另一个 Viewcontroller 的 UITextView 中