Javascript 函数式编程接口js
我在互联网上看到了函数式编程的接口 有一些其他语言的示例,但我的问题是我可以用javascript创建接口吗 我不需要每件事都非常严格 例如,用于从数据库获取行的接口: 在OOP中:Javascript 函数式编程接口js,javascript,Javascript,我在互联网上看到了函数式编程的接口 有一些其他语言的示例,但我的问题是我可以用javascript创建接口吗 我不需要每件事都非常严格 例如,用于从数据库获取行的接口: 在OOP中: interface DBGet { public function getResults($filters){} } 和执行: class MySQLDb implements DBGet { public function getResults($filters){ ...... } } 我
interface DBGet {
public function getResults($filters){}
}
和执行:
class MySQLDb implements DBGet {
public function getResults($filters){
......
}
}
我可以用函数式编程在JavaScript中转换代码吗
谢谢,JavaScript没有接口的概念 有关更多详细信息,请参阅。它基本上是这样说的: 没有“这个类必须有这些函数”的概念(即, 没有接口本身),因为:
const mySqlGetResults = () => {
// MySQL implementation of "getResults"
};
const postgreSqlGetResults = () => {
// PostgreSQL implementation of "getResults"
};
methodThatTakesAFunction(mySqlGetResults);
methodThatTakesAFunction(postgreSqlGetResults);
然而,主要的一点仍然存在:JavaScript并没有将您的对象保持在特定的契约中。因此,在程序运行期间的任何时间,您都可以将
mySqlGetResults
重新分配为“som string”
,并将其传递到您喜欢的任何地方,直到运行时为止,不会收到任何错误消息。这取决于您对可能不是您所认为的变量进行检查,以及处理您可能不确定对象是否按您所认为的定义的任何情况。接口与函数式编程没有直接关系。如果您想使用接口和类,可以尝试使用typescript。Typescript与函数式编程配合得很好,因为在将函数传递给其他函数之前,您可以声明并检查函数的外观。我不想使用OOP,我想问函数式编程如何解决问题-我希望这些函数带有这些参数-如果不是程序死亡的话。我能用函数式语言解决吗?比如haskell或其他语言。你的第一个问题是:我能用javascript制作接口吗。答案是:没有,但是你可以使用typescript。你的第二个问题是:如何以函数式风格重写你的课堂示例。答案是:您可以编写一个函数来接收另一个函数作为其参数。然后,您可以使用typescript界面对参数进行类型检查。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能无效。-@Vishal你是对的。我从链接的答案中添加了一些信息。谢谢。很好,但我想把它用于函数式编程。例如,我将如何实现一些接口,比如getRows函数。我希望getRows接受2个参数,并且我可以有不同的实现:从数据库,从内存,所有这些都使用相同的参数。在JavaScript中,您可以通过多种方式来实现这一点,因为该语言不要求您使用具体的类型系统。我将用一些示例代码更新我的答案。
const mySqlDbGet = {
getResults: () => {
// MySQL implementation of "getResults"
}
};
const postgreSqlDbGet = {
getResults: () => {
// PostgreSQL implementation of "getResults"
}
};
methodThatTakesAFunction(mySqlDbGet.getResults);
methodThatTakesAFunction(postgreSqlDbGet.getResults);
const mySqlGetResults = () => {
// MySQL implementation of "getResults"
};
const postgreSqlGetResults = () => {
// PostgreSQL implementation of "getResults"
};
methodThatTakesAFunction(mySqlGetResults);
methodThatTakesAFunction(postgreSqlGetResults);