JavaScript – 小技巧 Tips
1e6 等价于 1 + 后面 6 个零
console.log(1e6 === 1_000_000);
模拟 C# 的 Record Deconstruct
class Size implements Iterable<number> {
constructor(
public width : number,
public height: number
) {}
*[Symbol.iterator]() {
yield this.width;
yield this.height
}
}
const size = new Size(100, 200);
const [width, height] = size; // 100, 200
利用 Iterable 可以让对象支持 Array 式 的 Deconstruct.
property 数量可控的情况下,这种方式会比 Object 式 的 Deconstruct 容易重命名。
TypeScript 类型的问题
虽然 Generator 可以让对象具有 Deconstruct 的能力,但是类型却并不是 Tuple。
上面例子中碰巧 width 和 height 都是 number 所以才可以这样写,如果是不同类型还是得写 deconstruct 方法。
像下面这样, firstName 的类型会是 string | number
const person = {
firstName : 'Derrick',
lastName : 'Yam',
age: 11,
*[Symbol.iterator]() {
yield this.firstName;
yield this.lastName;
yield this.age;
}
}
const [firstName, lastName, age] = person;
我们只能另外写一个方法了
const person = {
firstName : 'Derrick',
lastName : 'Yam',
age: 11,
deconstruct() {
return [this.firstName, this.lastName, this.age] as const;
}
}
Object.defineProperty(person, 'deconstruct', {
enumerable: false
});
Conditional add Property
function doSomething(num?: number) {
const obj = {
str: '',
...(num !== undefined && { num }),
};
console.log(obj);
}
doSomething(); // { str: '' } 没有 num 属性
JavaScript – 小技巧 Tips的更多相关文章
- 12个非常实用的JavaScript小技巧
在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...
- 11个不常被提及的JavaScript小技巧
这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日常工作中经常出现,但是我们又很容易忽略. 1.过滤唯一值 Set类型是在 ES6中新增的,它类似于数组,但 ...
- [转]11个教程中不常被提及的JavaScript小技巧
原文地址: https://www.cnblogs.com/ld1024/p/10723827.html 这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日 ...
- 11个教程中不常被提及的JavaScript小技巧
这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日常工作中经常出现,但是我们又很容易忽略. 1.过滤唯一值 Set类型是在ES6中新增的,它类似于数组,但是 ...
- 常用的一些javascript小技巧
(转载)常用的一些javascript小技巧: http://bbs.blueidea.com/thread-2201069-1-1.html
- 12个十分实用的JavaScript小技巧
12个非常实用的JavaScript小技巧 在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候 ...
- 12个非常有用的JavaScript小技巧
在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...
- 8个Javascript小技巧
1. 使用 + 字符可以转换成数字 比如要把一个字符串数字转换成数字,你可能会这样做: var one = '1'; var two = '2'; var numberOne = Number(one ...
- 8个Javascript小技巧,让你写的代码有腔调
如果你想确保你的JavaScript在大多数浏览器和移动设备中都可以工作,那么我从大漠等大神指导,原来可以使用f2etest,也可以使用Endtest,browserstack等 1. 使用 + 字符 ...
- javascript小技巧-js小技巧收集(转)
本文转载自:http://blog.csdn.net/ocean20/article/details/2498699 每一项都是js中的小技巧,但十分的实用! 1.document.write(&qu ...
随机推荐
- node sass
registry=https://registry.npmmirror.com/ sass_binary_site=https://cdn.npmmirror.com/mirrors/node-sas ...
- PHP中的__autoload()和spl_autoload_register()
php的__autoload函数是一个魔术函数,在这个函数出现之前,如果一个php文件里引用了100个对象,那么这个文件就需要使用include或require引进100个类文件,这将导致该php文件 ...
- 数据仓库建模工具之一——Hive学习第二天
Hive的概述 1.Hive基本概念 1.1 Hive简介 Hive本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据存储,说白了hive可以理解为一个将SQL转换为Map ...
- [oeasy]python0119_语言的演化_拉丁字符_罗马帝国_罗马体
罗马拉丁字符 回忆上次内容 起源于埃及的 圣书体 象形文字 在与 两河流域的 苏美尔楔形文字 结合后 经过 腓尼基人 的拼音化 和 广泛传播 终于来到了 希腊 添加图片注释,不超过 140 ...
- C# Expression详解(高级)
LINQ在本地查询IEnumerbale主要是用委托来作为传参,而解析型查询IQueryable则用Expression来作为传参: public static IEnumerable<T> ...
- 使用后台模板,cnpm install报错
- [春秋云镜] Initial
[春秋云镜] Initial **整套网络环境拓扑:** 一.打进内网 开局一个ip:39.101.184.25,fscan扫一下 存在thinkphp5.0.23的漏洞,可以rce,我们 ...
- 测试工程师-bug的组成要素
bug的组成要素:所属产品.所属模块.版本.指派开发.bug标题.严重程度.优先级.bug类型.重现步骤.附件等: 1. 所属产品.所属模块.版本.指派开发 根据相应的项目正确填写 2.bug标题 简 ...
- [香橙派开发系列]3b系统安装和使用vscode进行远程连接
目录 前言 一.下载镜像和安装系统 二.使用串口助手进行调试 三.查看系统的ip地址 四.使用vscode连接香橙派 最后 前言 之前研究中断的时候一直出现问题,我怀疑是因为zero 3不支持,所以一 ...
- 【Linux】快速文件交互 lrzsz
首先需要安装依赖: yum install -y lrzsz 没有此依赖,Linux提示找不到命令: [root@localhost ~]# rz -bash: rz: 未找到命令 [root@loc ...