TypeScript 解构和展开
2024-10-19 21:31:10
解构数组
- 解构数组元素
let input = [1, 2];
let [first, second] = input;
console.log(first,second);
- 交换值
[first, second] = [second, first];
- 函数参数解构
function f([first, second]: [number, number]){
console.log(first,second);
}
f([1,2]);
- 剩余变量
let [first, ...rest] = [1,2,3,4];
console.log(first,rest);
- 忽略尾随元素
let [first] = [1,2,3,4];
console.log(first);
- 忽略其他元素
let [, second, , fourth] = [1,2,3,4];
console.log(second,fourth);
解构元组
- 解构元组元素
let tuple: [number, string, boolean] = [7, "hello", true];
let [a, b, c] = tuple;
- 剩余元素
let [a, ...bc] = tuple;
let [a,b,c, ...d] = tuple;
- 忽略末尾元素或其他元素
let [a] = tuple;
let [, b] = tuple;
对象解构
- 解构对象属性
let o = {
a: "foo",
b: 12,
c: "bar"
}
let {a, b} = o;
- 解构赋值
({a, b} = {a:"baz",b:101});
- 剩余变量
let {a, ...passthrough} = o;
let total = passthrough.b + passthrough.c.length;
- 解构属性重命名
let {a:newName1, b:newName2} = o;
- 解构并指定类型
let {a, b}: {a:string, b:number} = o;
- 解构并赋予默认值
function keepWholeObject(wholeObject: {a:string, b?:number}){
let {a,b = 1001} = wholeObject;
}
函数声明解构
- 函数声明解构
type C = {a:string, b?: number}
function f({a,b}: C): void{
}
- 指定默认值
function f({ a="", b = 0} = {} ): void{
}
f();
function f({a,b = 0 } = {a: "" }): void {
}
展开数组
- 数组元素展开
let first = [1, 2];
let second = [3, 4];
let bothPlus = [0, ...first, ...second, 5];
- 对象展开
let defaults = {food: "spicy" ,price : "$$" , ambiance: "noisy" };
let search = {...defaults, food: "rich" };
- 对象展开(但布包含方法)
class C {
p = 12;
m() {
}
}
let c = new C();
let clone = {...c};
clone.p;
clone.m(); // error!
最新文章
- 精通Web Analytics 2.0 (9) 第七章:失败更快:爆发测试与实验的能量
- cocosstdio之字体之文本和FNT字体
- java写文件
- [CareerCup] 11.7 Tower of People in Circus 马戏团的人塔
- 多线程程序设计学习(5)balking模式和timed模式
- 关于路由、AP、交换机的小总结
- Red Hat Enterprise Linux x86-64 上安装 oracle 11gR2
- Flex入门(三)——微架构之Cairngorm
- 解决Sublime Text 3中文显示乱码(tab中文方块)问题,sublime tab乱码
- Ubuntu下如何解压各类文件
- 文本三剑客---sed 基础
- 【SSH系列】深入浅出spring IOC中三种依赖注入方式
- 第十四节,OpenCV学习(三)图像的阈值分割
- secureCRT保存屏幕输出内容
- UVa - 10341
- 12-简单认识下margin
- MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(四)
- iOS Hardware Guide
- gvim中对变量的识别
- 【动态规划】bzoj3992 [Sdoi2015]序列统计 10分
热门文章
- EFCore代码实践
- 记一次错误排查,主要问题是跨平台文件中换行符(CRLF, LF)和垃圾字符( Caret Notation)
- 转 Java jar (SpringBoot Jar)转为win可执行的exe程序
- 第十九节:Asp.Net Core WebApi基础总结和请求方式
- (转)MySQL中char(36)被认为是GUID导致的BUG及解决方案
- 【BZOJ4016】[FJOI2014]最短路径树问题(点分治,最短路)
- 学习Linq之前必须知道的几种语法糖
- SQL Date 时间类型处理
- 添加shiv让所有现代浏览器都支持 HTML5 语义元素 html5.js让IE(包括IE6)支持HTML5元素方法
- css的尺寸、display的属性、以及浮动和清除浮动的方法