代码之家  ›  专栏  ›  技术社区  ›  Ravi Sevta

是否值得为函数参数定义“undefined and null”?

  •  1
  • Ravi Sevta  · 技术社区  · 6 年前

    在一些示例代码中我看到 undefined null 作为管道的函数参数,如下所示。

    print(param: string | undefined) {
      console.log(param);
    }
    

    所以我的问题是这是否值得定义 未定义 无效的 作为参数类型 string (或任何数据类型)?因为字符串本身可以是 无效的 未定义 是的。

    万一我搬走了 未定义 从函数参数来看,它的行为是一样的。

    print(param: string) {
      console.log(param);
    }
    
    3 回复  |  直到 6 年前
        1
  •  2
  •   Titian Cernicova-Dragomir    6 年前

    你说得对 undefined null 可以分配给 string 使用默认编译器设置。

    但是typescript支持 strictNullChecks 也就是说这个,那个 无效的 未定义 不再是任何类型的可分配的。此时,显式添加 未定义 仍然允许调用方传入 无效的 未定义 价值。

    你可以读更多关于这个话题的书 here

        2
  •  2
  •   Chayim Friedman    6 年前

    当您使用 --strictNullChecks 标记,typescript的编译器不允许您分配 null undefined 如果它没有启用变量(例如, var s: string = null 不会编译,但是代码 var s: string | null = null 将编译)。这面旗是用来防止错误的。

        3
  •  0
  •   Joseph Arriaza    6 年前

    这取决于你想做什么,大多数人用它来声明可选参数,如果在某些情况下你得到了一个你的代码不需要的参数,你可以用它,但我建议这样做:

    print (param? : string) {
     console.log(param);
    }
    

    这是可选参数的方法。

    一个简单的例子就是生成一个密码。

    checkPassword (password? : string) {
     if (!password) {
       password = this.somethingToGeneratePassword();
     }
    }