类函数typescript

时间:2015-05-27 22:15:40

标签: typescript

我想知道是否可以声明一个类函数的返回类型,它将通过它的构造函数在实例化时传递给类。

我正在使用一个'生物' class作为生物的通用基础,并将其特定(定义为界面' creatureSpecs')传递给构造函数。

一个生物行为'函数是可变的,取决于它是什么类型的生物。 '作用'将始终返回一个' Action'但是,它只需要一个特定于生物的代码路径来做到这一点。

所以 A)我可以在类本身声明通过构造函数传递的函数的返回类型吗?

B)这是错误的做法吗?

示例代码:

interface Action {type: string; direction: string;}
interface Creaturespec{ energy: number; direction: string; act: Function;        preyseen?: Array<any>};

var Creaturespecs: {[id: string]: Creaturespec } = {}

class creature{
  public energy: number;
  public direction: string; 
  public act: Function; 
  public originChar : string;
  public preyseen: Array<any>;

  constructor(spec: Creaturespec, originChar: string) {
    this.energy = spec.energy;
    this.direction = spec.direction;
    this.act = spec.act;
    this.originChar = originChar
    this.preyseen = spec.preyseen; 
  }
};

1 个答案:

答案 0 :(得分:0)

这是一个简单的例子:

interface Action {
    verb: string;
    /* ? */
}

interface Spec<T> {
    name: string;
    act(): T;
}

class Creature<T> {
    constructor(public spec: Spec<T>) {     
    }

    getAction(): T {
        return this.spec.act();
    }
}


var dog = new Creature({
    name: 'dog',
    act() {
        return { verb: 'woof', bark: 'bark' }
    }
});

// b: { verb: string, bark: string }
var b = dog.getAction();