Dan*_*ace 9 javascript typescript tsc
使用打字稿编译文件时出现错误:
Property 'qaz' does not exist on type '{ bar: string; }'.
Run Code Online (Sandbox Code Playgroud)
文件中包含以下代码:
let foo = {
bar: "Can you perform a Quirkafleeg?"
}
let { qaz = "I'm feeling manic!" } = foo;
console.log(qaz);
console.log(qaz.bar);
Run Code Online (Sandbox Code Playgroud)
基于页面上的示例代码:https://zellwk.com/blog/es6/ “解构对象”部分。
我本来希望得到第二个字符串作为输出,但我有点困惑,因为该页面上还有另一个示例:
let { fizz: faz = "Eugene was my friend." } = foo; // as defined above
console.log(fizz);
console.log(fizz.faz);
Run Code Online (Sandbox Code Playgroud)
这给出了类似的错误:
Property 'fizz' does not exist on type '{ bar: string; }'.
Run Code Online (Sandbox Code Playgroud)
这不是解构对象的工作原理。
本质上,它将查看子属性foo
并为其分配新变量
必须与属性名称匹配
foo
例如
const Zell = {
firstName: 'Zell',
lastName: 'Liew'
}
let { firstName, lastName } = Zell
console.log(firstName) // Zell
console.log(lastName) // Liew
Run Code Online (Sandbox Code Playgroud)
要修复您的示例,您需要执行以下操作
let foo = {
bar: "Can you perform a Quirkafleeg?"
}
let { bar } = foo;
console.log(bar);
Run Code Online (Sandbox Code Playgroud)
当您尝试访问栏上的“qaz”时,它不能访问,因为它bar
是String
编辑:
在您的示例中扩展
let { qaz = "I'm feeling manic!" } = foo;
当您qaz
通过分配一个值时,=
如果在对象 foo 上找不到它,它实际上只是一个默认值。
在你的例子中
let { fizz: faz = "Eugene was my friend." } = foo;
您试图分配fizz
给 的值 foo.faz
,如果fizz
不存在,foo
它将默认为“尤金是我的朋友”。
归档时间: |
|
查看次数: |
16857 次 |
最近记录: |