可能是一个有点傻的问题,但我只是一个初学者,有些事情我正在努力正确理解。
当我们有这样的代码时:
const { userName } = await getUserProfile({ userId });
这里到底发生了什么?我们是否正在从getUserProfile对象中分解userName,以便能够访问该属性?userId是否意味着getUserProfile函数有一个参数,该参数是一个具有userId属性的对象?
对不起,如果这是一个太初学者的问题,但如果有人有时间向我解释,请真的很感激。
我会说这个函数是这样的:
interface Options {
userId: number;
}
interface ReturnItem {
userName: string;
}
const getUserProfile = async (options: Options): Promise<ReturnItem> => {
// make some request with the id
const response = await axios.get(`/look/up/my/user/${options.userId}`);
return response.data;
}
析构是基于函数中定义的类型的,因此,您只需将项从返回的对象中拉出来,而不是获取对象,因为类型定义了您可以期望接收的内容。
而不是执行以下操作:
const myId = 1;
const myResult = await getUserProfile({userId: myId});
console.log(myResult.userName);
你可以做:
const userId = 1;
const {userName} = await getUserProfile({userId});
console.log(userName);
另一个例子:
const myReturnData = {
userName: 'Bjork'
};
现在可以通过以下方式访问用户名:
console.log(myReturnData.userName);
或
const {userName} = myReturnData;
console.log(userName);
析构是在对象中获取这些值并将它们分配给变量。
再远一点...
const myReturnData = {
userName: 'Bjork',
coolnessFactor: 10000
};
const {userName, coolnessFactor} = myReturnData;
console.log('My User is: ', userName);
console.log('and my Coolnessfactor is: ', coolnessFactor);
问题内容: 我在页面上添加了一个简单的文件,该文件在和原型中添加了一些非常普通的常见任务功能。 经过反复试验,我发现向,添加任何函数,无论其名称或功能如何都会导致jQuery中的Javascript错误: 罪魁祸首? 我在attr:function {}声明中得到的第1056行的错误: 显然G.replace是未定义的。 很明显,有些事情我只是没有用原型制作而已,但我很痛苦地未能弄清楚它是什么。
问题内容: Internet Explorer 11(Windows 7构建)中的对象包含某些函数的字符串表示形式,而不是您期望的本机调用。 这只能用原始的JavaScript破坏,而JSFiddle这样的网站对此代码没有问题,但是我怀疑是因为有适当的polyfill对其进行了纠正。 以以下HTML页面代码为例: 这在我安装的所有浏览器(IE11除外)中都可以很好地工作。第一行’ SCRIPT50
我编码了一个小脚本来制作一个小动画,但是当我在div上非常快地移动光标10次时,div也移动了10次。我做了一个全局var和一个if查询,但它不起作用。 代码: animon()函数被限定在onmouseover事件上,而animoff()函数被限定在onmouseout事件上。工作布尔值会检查div容器是否被移动。
问题内容: 我想问一下在调试过程中是否有可能以更有意义的方式识别对象。例如现在在Flex Builder调试面板中,例如: 对象(@ 12131241241) 理想情况下,我想拥有Object(@“ field1:field2”)…可以做到这一点。我相信在Java中,可以通过重写给定类的toString方法来实现…。在as3中尝试相同,但没有用 问题答案: 这里没有直接回答您的问题,但是周围有许多
问题内容: 我刚刚发现了chromestatus.com,在失去了一天的时间后,发现了以下功能条目: 映射:映射对象是简单的键/值映射。 那让我感到困惑。常规JavaScript对象是字典,那么它与字典有何不同?从概念上讲,它们是相同的(根据 Map和Dictionary之间的区别是什么?) chromestatus文档参考也无济于事: 映射对象是键/值对的集合,其中键和值都可以是任意ECMASc
问题内容: 我知道Go中没有析构函数,因为从技术上讲没有类。这样,我用来执行与构造函数相同的功能。但是,有没有办法在终止的情况下创建某些东西来模仿析构函数,例如使用关闭文件?现在,我只是打电话给我,但这有点荒唐,我认为设计很差。正确的方法是什么? 问题答案: 在Go生态系统中,存在一种处理包装了宝贵(和/或外部)资源的对象的惯用语:一种专门用于释放该资源的特殊方法,通常通过该机制进行 显式 调用。