Node.js 方法的Nodejs、DTO、输入类型和返回类型

Node.js 方法的Nodejs、DTO、输入类型和返回类型,node.js,dto,Node.js,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 fo

如何在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;
    }
    
  • 节点中没有本地方法来执行特定函数的返回类型(再次,如果您明确需要这种行为,那么您可能需要考虑一种严格类型化的语言)。在那里有“LITEN”工具,尽管您可以使用它来定义返回值的类型(也适用于参数,所以这也适用于问题2)。。这些工具可以设置为与项目的测试一起运行,它们将拒绝不满足指定返回值的函数。这是一个常用的选项。这不应与本机功能混淆,因为它要求您在每个函数上方包含特殊格式的注释,以便工作

  • 谢谢您的回答!我将明确检查ESlint。对于静态分析和类型强制,我将在最后可能使用TypeScript或Flow。