对interface 和 method 的理解

188 阅读3分钟

前言

最近在处理一份跨端指引文档,其中有一段代码示例的英文翻译有两个版本(interface description --- method description),然后需要去合并这些版本,这里记录一下我对interface和method的理解

'interface description' or 'method description'

addUsersToBlacklist(userIDs: string[]): Promise<BlackList>

Z.addUsersToBlacklist(userIDs).then(res => { // Added successfully });

'interface description' or 'method description'从字面意思上来看就是‘接口描述’和‘方法描述’的差别,这里选取js的代码展示(已简化),对于这段的代码是对方法的描述还是对接口的描述,感觉都没有太大问题,这里描述了方法的使用,或者说描述了接口的用法

interface和method的区别

interface:一个函数(方法)的抽象,即表现出了这个函数(方法)应该如何使用,会得到怎么样的结果,但没有表现出这个函数(方法)的完整具体实现 method:方法或者说函数(function),它可以仅表现出函数的用法和返回的结果,也可以仅表现出函数的具体实现,也可以仅指定名称或者全部都表现出来

对于以上的解释如下:

add(num:number):number

这段代码表示add接受一个参数number类型的num,返回一个number类型的值;所以这可以理解成是一个接口,可以通过具体的代码去实现add的效果

add(num:number):number{
  return num+1 
}

这段代码表示add接受number类型的参数num并返回num+1,这里有对add的具体实现这可以理解成是一个完整的可以直接调用的函数(方法)

但其实对于函数(方法)来说 ,有的时候不一定需要全部展示出函数体,一样可以理解成函数

add()
add(num) 
add(num:number):number

以上其实也完全可以看成是函数(方法),

  1. 这指明了add是一个函数(方法)但不知道它的具体作用
  2. 这指明了add是一个函数(方法)接受一个参数num
  3. 这指明了add是一个函数(方法)接受一个number类型参数,返回一个number类型参数

可以看出接口其实也可以看成是一个函数(方法),而且以上确实描述了函数(方法)add 接口没有提供实现,只展示出作用,以上当然也可以理解成是接口,没有具体实现

这里其实也涉及到使用场景,仅在定义的情况下没有完成的函数体(没有完整实现的函数),就是接口;直接拿来使用的情况下(有完整实现的函数),就是函数(方法)

结论

回到最开始的代码,我的理解是这里应该是对接口的描述,在这个场景下,此处提供了接口接受的参数和接口的返回值,后续再展示了具体的用法;这里应该理解成描述接口再到方法的调用更贴切,直接理解成方法最终传递的意思是一样的,但从interface到method 会更加合理

以上为个人见解如果有更好的解释或者理解