Difference between ts parameter definitions – myFunc({data}: {data: ExampleType}) {} vs myFunc(data:ExampleType) {}

huangapple go评论77阅读模式
英文:

Difference between ts parameter definitions - myFunc({data}: {data: ExampleType}) {} vs myFunc(data:ExampleType) {}

问题

以下是翻译好的内容:

  1. export default function myFunc(data: MyDataType) {}

  2. export default function myFunc({ data }: { data: MyDataType }) {}

英文:

I'm working on a TypeScript project and came across two different parameter definitions in some code. Both seem to achieve the same result, but I'm not sure if there's any significant difference between them. Could someone please explain the difference between the following two parameter definitions?

export default function myFunc(data: MyDataType) {}

vs

export default function myFunc({ data }: { data: MyDataType }) {}

Both definitions seem to accept an object of type MyDataType as a parameter. Are there any advantages or specific use cases for using one over the other? Any insights would be appreciated. Thank you!

答案1

得分: 2

两个定义不相同,第一个接受一个名为 data,类型为 MyDataType 的参数,而第二个接受一个具有一个名为 data,类型为 MyDataType 的属性的对象。

第二个签名使用了解构,从对象中提取 data 以在函数体中使用,所以在两种情况下,你都在函数作用域中有一个类型为 MyDataTypedata 变量。

唯一的区别在于输入参数的结构。

英文:

The two definitions are not identical, the first one takes one parameter named data of type MyDataType and the second takes an object with one property named data, of type MyDataType.

The second signature makes use of destructuring which extracts data for use in the function body, so in both cases you have one data variable of type MyDataType available in the function scope.

The only difference is the structure of the input parameter.

答案2

得分: 0

以下是翻译好的部分:

Both are different here based on the type of parameters:

第一种方式,接受名为 `data`,类型为 `MyDataType` 的参数:

export default function myFunc(data: MyDataType) {}

第二种方式,接受一个参数对象,其中 `data` 属性的类型为 `MyDataType`:

export default function myFunc({ data }: { data: MyDataType }) {}

如果我们打算增加更多参数,建议使用第二种方式,这样我们可以尽可能地解构参数:

export default function myFunc({ data, data2, data3 }: { data: MyDataType, data1: MyDataType1, data2: MyDataType2 }) {}

希望这能帮助您做出决策。
英文:

Both are different here based on the type of parameters:

export default function myFunc(data: MyDataType) {}

accept parameter data with type MyDataType

export default function myFunc({ data }: { data: MyDataType }) {}

accept parameter object with the data propety as MyDataType type

If we suppose to enhance and add more parameters then recommended would be second one so we can destructure as much as we can:

export default function myFunc({ data, data2, data3 }: { data: MyDataType, data1: MyDataType1, data2: MyDataType2 }) {}

Hope it will help you to decide.

huangapple
  • 本文由 发表于 2023年7月13日 00:43:51
  • 转载请务必保留本文链接:https://go.coder-hub.com/76672820.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定