node.js - Nodejs、DTO、方法的输入类型和返回类型
问题描述
如何尽可能接近 nodejs 中的 3 个以下功能?
// 1./ namespaces for types, so I don't need to have long type names
import foo.bar.Type1;
import foo.bar.Type2;
...
// 2./ strict complex types of method parameters
// 3./ strict complex type for return type
public function foo(Type1 param1, Type2 param2): Type3 {
...
}
这完全取决于在我们的项目中引入 DTO 的能力,如果没有它,这将变得非常混乱:(。
处理 DTO 的 nodejs 行业标准是什么?
解决方案
- 将 JS 文件嵌套在目录中几乎与命名空间一样接近。
如果您有一个目录结构,例如
foo >
bar >
Type1.js
Type2.js
然后可以通过以下方式导入:
const Type1 = require('./foo/bar/Type1');
const Type2 = require('./foo/bar/Type2');
- Node 是一种松散类型的语言,因此如果您真的需要全面严格的类型,那么您可能应该查看其他语言选项。但是,如果您只是在特定情况下需要它,您可以使用
typeof
运算符来确定传递给函数的类型并拒绝不满足类型要求的调用。
例子:
function test(someString, someNum, someObject) {
if ( typeof someString != 'string' ||
typeof someNum != 'number' ||
typeof someObject != 'object' )
{ return false; }
// Execute function
return true;
}
- Node 中没有本地方法来强制执行特定函数的返回类型(同样,如果您明确需要这种行为,那么您可能需要考虑使用严格类型的语言)。虽然有“linting”工具,但您可以使用它们来定义返回值的类型(也适用于参数,因此这也适用于问题 2)。这些工具可以设置为与项目的测试一起运行,它们将拒绝不满足指定返回值的函数。ESLint是一个流行的选择。这不应与本机功能混淆,因为它要求您在每个功能上方包含特殊格式的注释才能工作。
推荐阅读
- java - 使用 XSSFWorkbook 创建 xlsx 文件,但使用方法 createSheet("String") 时出错
- python - Python 3 使用 Bs4 抓取
- oracle - 使用 Oracle DBMS_DATAPUMP 导入单个表时主表出错
- python - 仅在相同的索引值内识别列值的变化
- xml - 将 XML 数据导入 MS Access 运行时错误
- soap - 什么是 Servicenow SOAP API getkeys 通配符?
- c++ - 使用新值和值但没有明确数量的元素的数组初始化
- laravel - 在另一个工厂调用工厂
- javascript - 从请求中分派 redux 操作的正确方法
- java - 在delphi android应用程序中使用java .jar库的问题