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

时间:2018-09-30 20:58:58

标签: node.js dto

如何在Node.js中尽可能接近以下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行业标准是什么?

1 个答案:

答案 0 :(得分:1)

  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中没有为特定功能强制返回类型的本地方法(同样,如果您明确需要此行为,则可能需要考虑使用严格类型的语言)。您可以使用“整理”工具定义返回值的类型(也可以为参数定义类型,因此这也适用于问题2)。可以将这些工具设置为与项目的测试一起运行,并且它们将拒绝不满足指定返回值的函数。 ESLint是一个流行的选择。请勿将其与本机功能混淆,因为它要求您在每个功能上方都包含特殊格式的注释才能正常工作。