Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当没有要指定的确切值时,为TypeScript可选参数传递什么,';未定义';或';空';?_Typescript - Fatal编程技术网

当没有要指定的确切值时,为TypeScript可选参数传递什么,';未定义';或';空';?

当没有要指定的确切值时,为TypeScript可选参数传递什么,';未定义';或';空';?,typescript,Typescript,我在TypeScript中有以下函数(我不能更改参数的顺序) 如果我只需要传递firstName和address作为lastname传递的更好/合适/推荐值是什么 case 1: user("Jack", undefined, "NY"); 或 每种方法的优缺点是什么?我发现这一点,即您应该始终使用undefined和notnull null和未定义 使用未定义的。不要使用null 不管怎样,检查一下, 未定义表示变量已声明但尚未赋值。 null是一个赋值。它可以作为无值的表示形式分配给变

我在TypeScript中有以下函数(我不能更改参数的顺序)

如果我只需要传递
firstName
address
作为
lastname
传递的更好/合适/推荐值是什么

case 1: user("Jack", undefined, "NY");

每种方法的优缺点是什么?

我发现这一点,即您应该始终使用undefined和notnull

null未定义

  • 使用未定义的。不要使用null
不管怎样,检查一下,
未定义
表示变量已声明但尚未赋值。
null
是一个赋值。它可以作为无值的表示形式分配给变量。因此,为了达到
可选
的目的,我认为
未定义
会更好。

您应该使用未定义

这:


告诉我们,
lastName
参数的类型为
string | undefined
。因此,使用
null
将是非法的(在严格模式下,这有点好)。使用未定义的。

关于什么?IngoBürk什么最合适或推荐?这两种方法的行为是否相同?这取决于函数的实现方式。如果省略了第二个(和第三个)参数,那么使用undefined会发生完全相同的情况,但是null较短(这也是一个度量)。函数在未定义或null上的行为取决于实现。@IngoBürk在函数中不显式处理该场景。那样的话,我应该通过什么考试。这个功能我无法更改。(但我想知道除了处理那些空的和未定义的更改之外,还有什么可能的更改)最安全的方法是使用未定义的。如果函数不处理这些参数,那么它可能不应该首先将这些参数设置为可选参数,因为
user(“Jack”)
user(“Jack”,未定义,未定义)
是相同的,那么如果函数不能处理缺少的参数,为什么要将某些参数设置为可选参数呢?它并没有说明您应该始终使用未定义的参数,它指出,当您对TS代码库进行贡献时,应该始终使用undefined。。。“这些是TypeScript贡献者的编码指导原则。这不是TypeScript社区的规定性指导原则。”他们继续将消息带回家“再次:这不是TypeScript社区的规定性指导原则”总之,检查这里,未定义。。。该链接在javascript上下文中解释主题。如果你想知道TS的正确答案,请看我的答案,它是100%legit@NurbolAlpysbayev我想这不会有什么坏处对吧?链接?如果是,则该链接在JS上下文中是正确的。此外,它对于Typescript也是正确的,因为它是JS的超集。但是这个主题是关于打字脚本的,所以我想你想知道从打字系统的角度看什么是正确的方式。@Nurbolpysbayev同意你的理解。我只需要强调这两者之间的区别。只有启用了才是非法的,这在我看来是个好主意。@AndyJ我忘了这一点,因为在任何项目中,我做的第一件事就是启用
strict:true
。不严格的打字对我来说很奇怪。是的,我也这么做。
case 1: user("Jack", undefined, "NY");
case 2: user("Jack", null, "NY");
lastName?: string