TypeScript 解构和展开
解构数组
- 解构数组元素
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!
TypeScript 解构和展开的更多相关文章
- Typescript 解构 、展开
什么是解构.展开? 展开与解构作用相反,简单来说: 解构:解构赋值允许你使用数组或对象字面量的语法,将数组和对象的属性付给各种变量. 展开:允许你讲一个数组展开为另一个数组,或一个对象展开为另一个对象 ...
- TypeScript笔记 5--变量声明(解构和展开)
解构是什么 解构(destructuring assignment)是一种表达式,将数组或者对象中的数据赋给另一变量. 在开发过程中,我们经常遇到这样问题,需要将对象某个属性的值赋给其它两个变量.代码 ...
- TypeScript 解构
⒈解构数组 最简单的解构莫过于数组的解构赋值了: let input = [1, 2]; let [first, second] = input; console.log(first); // out ...
- TS学习之解构与展开
一.解构 1.解构数组 let input = [1, 2]; let [first, second] = input; console.log(first); // outputs 1 consol ...
- Typescript中一些不理解的概念解释(泛型、断言、解构、枚举)
新的项目想使用typescript,因此又对其概念及使用过一遍,本文主要记录下对之前一些概念不太理解的地方. 1.泛型 定义: 在定义函数.接口或者类的时候,不预先指定具体的类型,而是在使用的时候再指 ...
- 变量声明---let,const,解构
let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题. const是对let的一个增强,它能阻止对一个变量再次赋值. 块作用域 当用let声明一个变量,它使用的是 ...
- 豪情-CSS解构系列之-新浪页面解构-01
目录: 一. 新浪的布局特点 二. 内容细节的特点 三. 其中相关的一些基础技术点 1. 常见布局方法 2. 布局要点 3. Debugger误区 4.列表 5.字体颜色 6.CSS选择符 7.CSS ...
- ES6新特性-------解构、参数、模块和记号(续)
六.解构 解构提供了一个方便的地从对象或数组中提取数据的方法,请看下面的例子: //ES6 let [x,y]=[1,2];//x=1,y=2 //ES5 var arr=[1,2]; var x=a ...
- 前端笔记之ES678&Webpack&Babel(上)初识ES678&Babel&let和const&解构&语法
一.ES版本简介和调试运行方法 1.1 ECMAScript简介 MDN手册:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript JavaS ...
随机推荐
- docker 发布应用时添加 git revision
概要 实施步骤 获取 git revision 前端 git revision 注入 后端 git revision 注入 概要 docker 发布应用时, 将 git revision 注入到应用中 ...
- 论文阅读: Building a 3-D Line-Based Map Using Stereo SLAM
Abstract 一个把直线用作feature的SLAM系统. 跟点相比, 直线对于环境的结构提供了更丰富的信息, 也让其鞥有可能推断地图的空间语义. 使用了Plucker line coordian ...
- Kuboard Kubernetes安装
一.简介 Kubernetes 容器编排已越来越被大家关注,然而使用 Kubernetes 的门槛却依然很高,主要体现在这几个方面: 集群的安装复杂,出错概率大 Kubernetes相较于容器化,引入 ...
- 基于 HTML5 换热站可视化应用
换热站是整个热网系统中最核心的环节,它将一侧蒸汽或高温水通过热交换器换成可以直接进入用户末端的采暖热水.换热站控制系统是集中供热监控系统的核心部分,换热站控制系统既可独立工作,也可以接受调度中心的监督 ...
- Codeforces Round #556 (Div. 1)
Codeforces Round #556 (Div. 1) A. Prefix Sum Primes 给你一堆1,2,你可以任意排序,要求你输出的数列的前缀和中质数个数最大. 发现只有\(2\)是偶 ...
- 2019-11-29-WPF-绑定命令在-MVVM-的-CanExecute-和-Execute-在按钮点击都没触发可能的原因...
原文:2019-11-29-WPF-绑定命令在-MVVM-的-CanExecute-和-Execute-在按钮点击都没触发可能的原因... title author date CreateTime c ...
- .Net MVC伪静态实现
伪静态的好处就不多说了 这里说一下Mvc具体实现的方法 第一步 打开根目录的Web.config 给webServer 节点下的modules 添加属性runAllManagedModulesFo ...
- C# Moq
Moq 1 My Cases 1.1 简单入门 2 Reference 2.1 Methods 2.2 Matching Arguments 2.3 Properties 2.4 Events 2.5 ...
- 经典SQL语句使用方法大全(自留用)
一.基础 1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份 ...
- 关于 部署方面研究 Visual Studio 2013
InstallShield2013LimitedEdition 下载地址 http://download.csdn.net/download/yuanyuan_186/7681385