首页 > 解决方案 > 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 行业标准是什么?

标签: node.jsdto

解决方案


  1. 将 JS 文件嵌套在目录中几乎与命名空间一样接近。

如果您有一个目录结构,例如

foo >
    bar >
        Type1.js
        Type2.js

然后可以通过以下方式导入:

const Type1 = require('./foo/bar/Type1');
const Type2 = require('./foo/bar/Type2');
  1. Node 是一种松散类型的语言,因此如果您真的需要全面严格的类型,那么您可能应该查看其他语言选项。但是,如果您只是在特定情况下需要它,您可以使用typeof运算符来确定传递给函数的类型并拒绝不满足类型要求的调用。

例子:

function test(someString, someNum, someObject) {
    if ( typeof someString != 'string' ||
         typeof someNum != 'number' ||
         typeof someObject != 'object' )
    { return false; }

    // Execute function
    return true;
}
  1. Node 中没有本地方法来强制执行特定函数的返回类型(同样,如果您明确需要这种行为,那么您可能需要考虑使用严格类型的语言)。虽然有“linting”工具,但您可以使用它们来定义返回值的类型(也适用于参数,因此这也适用于问题 2)。这些工具可以设置为与项目的测试一起运行,它们将拒绝不满足指定返回值的函数。ESLint是一个流行的选择。这不应与本机功能混淆,因为它要求您在每个功能上方包含特殊格式的注释才能工作。

推荐阅读