在javascript中记录duck类型参数

时间:2017-03-24 06:51:02

标签: javascript documentation

如何正确记录鸭子类型的对象参数?让我们说我有一个功能:

function doSuff(animal){
    // do stuff
}

如果我要求动物应该使用walkeatspeaksleep方法,请如何在文档中说明它们?

编辑:通过文档,我的意思是像JSDoc或任何其他评论风格的文档。我可能会做一个单独的深入技术文档,但我认为在函数代码本身上面对参数进行简单描述是很好的。

1 个答案:

答案 0 :(得分:0)

我也认为编写自我解释的代码很好。在函数上使用JSDoc,还可以帮助用户知道代码中直接丢失的内容。

您可以执行以下操作:

let createAnimal = function (a) {
  if (!a.walk || !a.eat || !a.speak || !a.sleep) {
    throw new Error(`An animal must walk: '${a.walk}', eat: '${a.eat}', speak: '${a.speak}', sleep: '${a.sleep}'`);
  }
  return function doStuff() {
    console.log(a.swim)
  };
};

let Animal = {
  walk: 'fnWalk',
  eat: 'fnEat',
  speak: 'fnSpeak',
  sleep: 'fnSleep'
};

let Duck = Object.create(Animal);
Duck.swim = 'fnSwim';

let doStuffWithAnimal = createAnimal(Duck);
doStuffWithAnimal();