让我说我写这个API(在TS中),看看其中一些属性:
export class MyAPI{
propertyThatShouldContainSuffix:Array<string>; // like .jpg or .mp3
somethingElses:Array<SomethingElse>; //instances of some class
enumProperty:SomeEnum; // enum SomeEnum{a,b,c,d}
constructor(object){
/*
this object is input by the API consumer,
and its properties will be assigned to the new fields of
the new instance
*/
}
}
有效用法示例:
var myApi = new MyAPI({
propertyThatShouldContainSuffix : ["img.jpg","video.mp4" ...],
somethingElses : [new SomethingElse(/*yada yada*/),new SomethingElse(/* whateverrr*/) ...],
enumProperty:2
});
可能导致问题的输入:
var myApi = new MyAPI({
propertyThatShouldContainSuffix : ["img","video",5 ...],
somethingElses : [new SomethingElse(/*yada yada*/),new SomethingTotallyElse(/* whateverrr*/) ...],
enumProperty:6
});
如您所见,第一个属性是一个字符串数组,需要有一个后缀,如图像,应该是.jpg或.png或其他。有一个对象数组应该包含一些字段,最后是一个枚举字段, 让我们说它的范围是0到3。
现在,当您将预期值输入其中时,一切正常 (例如,第一个数组中的所有字符串都有正确的后缀,依此类推)
然后我认为我应该处理糟糕的输入,就像用户那样 将发送他的所有图像名称,没有任何后缀,或将给我一个&#34; 9&#34;如 枚举的输入,发送对象而不是数组,等等。
BUT!这就是问题:我应该走多远? 我应该检查每个属性是否正确(例如,应该是一个数组实际上是一个数组,所有&#34;应该是后缀&#34;是后缀, 所有&#34; somethingelses&#34;包含所有正确的字段?
因为如果我这样做,那么每次创建MyAPI对象的实例都会产生一大堆开销。
或者我应该只做一些真正基本的事情,比如检查一下,如果他没有拼错对象中的某些字段(因此让无助的用户暴露于&#34;但为什么这不起作用?愚蠢的API !!!&#34;)?
或其他什么东西?
谢谢你!