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的更多相关文章

  1. 12个非常实用的JavaScript小技巧

    在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...

  2. 11个不常被提及的JavaScript小技巧

    这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日常工作中经常出现,但是我们又很容易忽略. 1.过滤唯一值 Set类型是在 ES6中新增的,它类似于数组,但 ...

  3. [转]11个教程中不常被提及的JavaScript小技巧

    原文地址: https://www.cnblogs.com/ld1024/p/10723827.html 这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日 ...

  4. 11个教程中不常被提及的JavaScript小技巧

    这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日常工作中经常出现,但是我们又很容易忽略. 1.过滤唯一值 Set类型是在ES6中新增的,它类似于数组,但是 ...

  5. 常用的一些javascript小技巧

    (转载)常用的一些javascript小技巧: http://bbs.blueidea.com/thread-2201069-1-1.html

  6. 12个十分实用的JavaScript小技巧

    12个非常实用的JavaScript小技巧 在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候 ...

  7. 12个非常有用的JavaScript小技巧

    在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...

  8. 8个Javascript小技巧

    1. 使用 + 字符可以转换成数字 比如要把一个字符串数字转换成数字,你可能会这样做: var one = '1'; var two = '2'; var numberOne = Number(one ...

  9. 8个Javascript小技巧,让你写的代码有腔调

    如果你想确保你的JavaScript在大多数浏览器和移动设备中都可以工作,那么我从大漠等大神指导,原来可以使用f2etest,也可以使用Endtest,browserstack等 1. 使用 + 字符 ...

  10. javascript小技巧-js小技巧收集(转)

    本文转载自:http://blog.csdn.net/ocean20/article/details/2498699 每一项都是js中的小技巧,但十分的实用! 1.document.write(&qu ...

随机推荐

  1. PHP函数http_build_query使用详解

    什么是http_build_query? 使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求字符串.参数 formdata 可以是数组或包含属性的对象.一个 formdata 数组 ...

  2. workman和swoole区别和异同

    swoole是使用C语言实现的socket通信框架,workerman则是使用纯php实现的socket框架,二者进程模型上也存在很多的不同. 先说下swoole的进程模型,看一下以下解析图 mast ...

  3. 让摄像头带上智慧“智驭视界·AIEye”

    接上一篇<物联网浏览器(IoTBrowser)-基于计算机视觉开发的应用"智慧眼AIEye">,经过AI的包装很高级,确实很屌炸天. 智驭视界·AIEye 在科技赋能的 ...

  4. [oeasy]python017_万行代码之梦_vim环境_复制粘贴

    继续运行 回忆上次内容 上次 保存运行一条龙 :w|!python3 %   我想 再多输出 几行 增加一下 代码量 可以吗?       添加图片注释,不超过 140 字(可选) 代码量 在正常模式 ...

  5. SSH指定用户登录与限制

    环境准备 :::info 实验目标:ServerA通过用户ServerB(已发送密钥和指定端口) ::: 主机 IP 身份 ServerA 192.168.10.201 SSH客户端 ServerB ...

  6. 工作单元(UnitOfWork) 模式 (1)

    在开始UnitOfWork模式之前有必要回顾下我们耳熟能详的Data Access Object(DAO)模式,即数据访问对象.DAO是一种简单的模式,我们构建应用的时候经常会使用到它,它的功能就是将 ...

  7. Kubernetes 存储概念之Volumes介绍

    Volumes 默认情况下容器中的磁盘文件是非持久化的,对于运行在容器中的应用来说面临两个问题,第一:当容器挂掉,K8S重启它时,文件将会丢失:第二:当Pod中同时运行多个容器,容器之间需要共享文件时 ...

  8. 【C】Re05 指针

    一.变量 & 指针 变量 = 内存地址 + 存储值 指针变量 = 内存地址 + 存储值[变量的内存地址] 作用: 间接访问内存地址 内存地址 = 地址编号 地址编号:内存中的每个字节唯一的编号 ...

  9. 网友提问:分层A*算法 —— 大规模寻路算法优化

    网友提问: 相关: https://www.cnblogs.com/devilmaycry812839668/p/10525727.html

  10. 程序员学习网站推荐:路线向导(roadmap.sh)

    网站地址: https://roadmap.sh/ 在外网的技术论坛上看到这个网站,上面给出多种编程语言的学习路线,也就是给出不同编程语言的从易到难的组成内容(语言特性),通过这个网站可以辅助学习编程 ...