JavaScript/TypeScript中的对象解构赋值,是一种从对象中提取属性值的简介语法。
示例:
const { level, id, key } = node;
等同于:
const level = node.level;
const id = node.id;
const key = node.key;
深入解析:
1.工作原理
- 从 node 对象提取 level,id,key 属性
- 将提取的值分别赋给同名的变量 level, id, key
- 如果 node 缺少某个属性, 对应变量会被赋值为 undefined
2.扩展用法
(1)重命名变量
const { id: userId, key: itemKey} = node;
(2)默认值
const { level = 1, id = 'default-id' } = node;
(3)嵌套解构
const {
data: {
user: { name, age }
}
} = response;
(4)剩余模式
const { id, ...rest } = node;
id = node.id;
rest = { level: node.level, key: node.key, ... }
(5)函数参数解构
function processNode({ id, level }: { id: string; level: number}) {
}
3.Typescript中的类型注解
const { level, id, key }: { level:number; id: string; key: string } = node;
或者使用接口
interface Node {
level: number;
id: string;
key: string
}
const { level, id, key }: Node = node;
实际应用场景
1.React组件Props接收
const MyComponent = ({ title, onClick }: { title: string; onClick: () => void}) => {
}
2.API响应处理
fetch('/api/data')
.then(({ status, data })) => {
}
3.配置对象处理
function init({ url, timeout = 5000, retry = 3}) {
}
4.交换变量值
let a = 1, b = 2;
[a, b] = [b, a];
注意事项
- 属性不存在时会赋值 undefined, 可使用默认值避免。
- 解构 null/undefined 时会报错,需要确保对象存在
const { id } = node || {};
- 性能考虑: 大量深层嵌套解构赋值会影响可读性。
- 类型安全: 在TypeScript中最好配合接口/类型使用。
解构赋值是现代JavaScript/Typescript开发中极为常用的特性,能显著提高代码的简洁性和可读性。