TypeScript 的变量定义
Variable Declaration
let 和 const 是 JavaScript 中变量声明的两个相对较新的概念。 正如我们之前提到的,let 在某些方面类似于 var,但允许用户避免用户在 JavaScript 中遇到的一些常见“陷阱”。
const 是 let 的增强,因为它可以防止重新分配给变量。
变量解构 - Array destructuring
let input = [1, 2];
let [first, second] = input;
console.log(first); // outputs 1
console.log(second); // outputs 2
这将创建两个名为 first 和 second 的新变量。 这相当于使用索引,但更方便:
first = input[0];
second = input[1];
同样适用于函数参数列表:
function f([first, second]: [number, number]) {console.log(first);console.log(second);
}
f([1, 2]);
可以配合 … 语法使用:
let [first, ...rest] = [1, 2, 3, 4];
console.log(first); // outputs 1
console.log(rest); // outputs [ 2, 3, 4 ]
let [, second, , fourth] = [1, 2, 3, 4];
console.log(second); // outputs 2
console.log(fourth); // outputs 4
Object destructuring
这在 SAP Spartacus 的源代码里比较多见。
let o = {a: "foo",b: 12,c: "bar",
};
let { a, b } = o;
这会从 o.a 和 o.b 创建新变量 a 和 b。 请注意,如果不需要,可以跳过 c。
请注意,我们必须用括号将这个语句括起来。 JavaScript 通常将 大括号 解析为块的开始。
您可以使用以下语法为对象中的其余项目创建变量…:
let { a, ...passthrough } = o;
let total = passthrough.b + passthrough.c.length;
给属性设置别名
let { a: newName1, b: newName2 } = o;
这里的语法开始变得混乱。 您可以将 a:newName1 读作“a as newName1”。 方向是从左到右,和下列代码等价:
let newName1 = o.a;
let newName2 = o.b;
这里的冒号,及其容易同类型定义语法混淆起来。
Spread Operator
展开运算符与解构相反。 它允许您将一个数组扩展到另一个数组中,或者将一个对象扩展到另一个对象中。 例如:
let first = [1, 2];
let second = [3, 4];
let bothPlus = [0, ...first, ...second, 5];
这给 bothPlus 值 [0, 1, 2, 3, 4, 5]。 传播创建第一个和第二个的浅拷贝。 它们不会因 spread Operator 而改变。
spread 操作符也能应用在对象上:
let defaults = { food: "spicy", price: "$$", ambiance: "noisy" };
let search = { ...defaults, food: "rich" };
spread 后对象的值为:
{ food: "rich", price: "$$", ambiance: "noisy" }
和数组展开一样,它是从左到右进行的,但结果仍然是一个对象。 这意味着在扩展对象中较晚出现的属性会覆盖较早出现的属性。
Object 的 spread 操作符有一些局限性:
首先,它只包含对象自己的可枚举属性。 基本上,这意味着在传播对象实例时会丢失方法:
class C {p = 12;m() {}
}
let c = new C();
let clone = { ...c };
clone.p; // ok
clone.m(); // error!
TypeScript 的变量定义相关推荐
- C++ 笔记(05)— 变量(变量定义、声明、初始化、extern关键字、变量之间转换)
1. 变量定义 变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储.变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示: type variable_list; ...
- Go 学习笔记(6)— 变量定义、变量声明、变量作用域
1. 变量定义 Go 语言变量名由字母.数字.下划线组成,其中首个字符不能为数字.声明变量的一般形式是使用 var 关键字: var varName dataType [= value] Go 语言和 ...
- VS插件开发——格式化变量定义语句块
插件介绍 代码地址:https://github.com/sun2043430/vs2008_format_variable_define_plugin/ 在vs里,对选中的变量定义块进行格式化,效果 ...
- 关于STM32的变量定义
今天调试程序时,想观察一下变量的情况,突然发现平时经常移植别人程序时最容易忽略的一个致命问题,那就是忽略变量类型,这里有必要给大家一定知识啦,都是库里面的,非原创! 3.0以后的版本中使用了CMSIS ...
- 判断变量定义和变量为空问题
变量定义和变量为空问题:jrhmpt01:/root# cat x1.pl my $xx=""; if (defined($xx)){print "111111111\n ...
- linux LANG变量 定义系统的主语系环境
LANG 变量定义了 Linux系统的主语系环境,这个变量的默认值如下: [root@localhost src]# echo $LANG zh_CN.UTF-8 这是因为我们在安装 Linux 时选 ...
- 【Android 组件化】使用 Gradle 实现组件化 ( Gradle 变量定义与使用 )
文章目录 一.顶层 Gradle 定义扩展变量 二.获取顶层的 Gradle 对象 三.Module 中使用 Gradle 变量 四.Gradle 中打印变量值 五.涉及到的 Gradle 构建脚本 ...
- 1、C语言面试笔试---变量定义和声明
文章目录 1.背景 2.变量定义和声明 1.局部变量和全局变量 2.变量的存储类别 3.例题 4.内存泄漏 1.背景 2019秋招马上开始了,今天已经是7月30号了,赶紧刷刷C语言,争取在8月中旬刷完 ...
- C++阶段01笔记07【指针(基本概念、变量定义和使用、内存空间、空指针和野指针、const修饰指针、指针和数组、指针和函数)】
C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 7 指针 7.1 指针的基本概念 7.2 指针变量的定义和使用 示例 7.3 指针所占内存空间 示例 7.4 空指针和野指针 示 ...
最新文章
- 《Android深入透析》之界面
- SQL Server多实例环境搭建与连接
- JavaScript之Ajax-1 Ajax(Ajax原理、Ajax对象属性和方法)
- Go database/sql 教程
- 摄像头网络安全如何保障
- Protel.DXP2004 电路板设计
- python爬虫获取数据失败请稍后访问_Python爬取微博评论数据,竟被反爬封号了!...
- randon变换(拉东变换)
- stm32L152 使用内部内部flash做EEPROM 出FLASH_ERROR_WRP问题及解决办法
- 《A Novel Approach to 3-D Gaze Tracking Using Stereo Cameras》论文阅读
- C++沙海拾遗(三)
- 医院信息管理系统源码 HIS系统源码
- Yii2实现手机二维码扫一扫登入
- vscode查看历史代码_VSCode中数据科学家的四大代码查看器
- springboot 健康饮食管理系统
- MFC CMFCToolBar静态工具栏和动态工具栏,加载自定义图片(真彩透明)
- 2021会宁三中高考成绩查询,2021年白银中考录取分数线查询
- php论文提答辩问题,论文答辩导师一般会问什么问题
- 网络工程师 考试命令合集 交换机、路由器、ACL、NAT、防火墙等配置命令
- 《心流》| 自得其乐的人生