Javascript 在函数中输入对象的非结构化值,如参数';s函数

Javascript 在函数中输入对象的非结构化值,如参数';s函数,javascript,typescript,typescript-typings,object-destruction,Javascript,Typescript,Typescript Typings,Object Destruction,因此,我们有一些功能: const someVal = func(customObject => {console.log(customObject.data.users)}); 我们可以使用对象销毁语法重写此函数,使其更美观、简洁,为用户带来价值: 现在想象一下,用户值必须由某个typescript接口描述 应该如何内联完成 像这样 const someVal = func(({ data: { users } = {} : { data: { users : UserInterfa

因此,我们有一些功能:

const someVal = func(customObject => {console.log(customObject.data.users)});
我们可以使用对象销毁语法重写此函数,使其更美观、简洁,为用户带来价值:

现在想象一下,用户值必须由某个typescript接口描述

应该如何内联完成

像这样

 const someVal = func(({ data: { users } = {} : { data: { users : UserInterface }) => {console.log(users)});

UPD。数据是通用值变量

您可以内联执行,但它可能会变得非常混乱。我通常更喜欢定义类型以提高可读性:

type SomeValInput = {
  data: {
    users?: UserInterface;
  };
};
type SomeVal = (data: SomeValInput) => void;
const someVal: SomeVal = ({ data: { users } }) => console.log(users || {});

我没有在解构中包含默认值,因为我在过去将其与typescript结合使用时遇到了问题。

您可以内联使用,但它可能会变得非常混乱。我通常更喜欢定义类型以提高可读性:

type SomeValInput = {
  data: {
    users?: UserInterface;
  };
};
type SomeVal = (data: SomeValInput) => void;
const someVal: SomeVal = ({ data: { users } }) => console.log(users || {});

我没有在解构中包含默认值,因为我以前在与typescript结合使用时遇到过问题。

想象一下,func函数有n种用法。你会创建n个类似的输入类型?(数据对象中的键可能会有所不同)。在这种情况下,创建n个SomeValInput类型也会很混乱,我想。啊,也许我读错了——如果你说的是为多种类型的输入键入1个函数,那么你可能想重载类型签名——一般来说,是的,我建议为不同类型的数据创建不同的类型——我发现TS的一个附带好处是更清晰的代码文档。但是如果不了解您使用的是什么数据,很难想象您有n个func函数的用法。你会创建n个类似的输入类型?(数据对象中的键可能会有所不同)。在这种情况下,创建n个SomeValInput类型也会很混乱,我想。啊,也许我读错了——如果你说的是为多种类型的输入键入1个函数,那么你可能想重载类型签名——一般来说,是的,我建议为不同类型的数据创建不同的类型——我发现TS的一个附带好处是更清晰的代码文档。但是如果不了解您使用的是什么数据,就很难说了