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. 当项目中使用到缓存,我们是选择 Redis 还是 Memcached ,为什么?

    举一些场景: 一.比如实现一个简单的日志收集功能或发送大量短信.邮件的功能,实现方式是先将数据收集到队列中,然后有一个定时任务去消耗队列,处理该做的事情. 直接使用 Redis 的 lpush,rpo ...

  2. TIER 1: Sequel

    TIER 1: Sequel MySQL MySQL 是一种流行的开源关系型数据库管理系统(RDBMS),它被广泛用于存储和管理大量的结构化数据.MySQL 是由瑞典公司 MySQL AB 开发的,后 ...

  3. ComfyUI进阶:Comfyroll插件 (七)

    前言: 学习ComfyUI是一场持久战,而Comfyroll 是一款功能强大的自定义节点集合,专为 ComfyUI 用户打造,旨在提供更加丰富和专业的图像生成与编辑工具.借助这些节点,用户可以在静态图 ...

  4. redis复制replica

    通过查看log信息即可观察主机是否与从机正确连接,一般来说主机上有succeeded就是可以了 可以通过info replication查看自己的身份 role:master connected_sl ...

  5. python selenium元素定位

    1.ID元素定位基于元素属性中的id的值来进行定位,id是一个标签的唯一属性值可以通过id属性来唯一定位一个元素,是首选的元素定位方式,动态ID不做考虑.driver .find_element_by ...

  6. 在Centos7中使用一键脚本安装Oracle11g

    在Centos7中使用一键脚本安装Oracle11g 1. 环境准备 1.1 系统版本:Centos7.9(2009) 1.2 Oracle版本:Oracle 11g 11.2.0.4 1.3 网络需 ...

  7. 【MySQL】替换件需求

    先上个表结构吧: CREATE TABLE `tm_part_replace` ( `ITEM_ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', ...

  8. Windows11重置后出现Windows.old文件夹无法删除,报错C:\Windows.old\WINDOWS\System32\WDI - 目录不是空的。Win11系统Windows.old能删除吗?Windows.old怎么删

    问题: Windows11重置后出现Windows.old文件夹无法删除,报错C:\Windows.old\WINDOWS\System32\WDI - 目录不是空的. 网上的各种方法均不奏效: ht ...

  9. “refer to”和“refer to as”在英语中的用法有所不同

    "refer to"和"refer to as"在英语中的用法有所不同,具体区别如下: Refer to "Refer to"意为" ...

  10. NVIDIA的人形机器人的基础模型Project GR00T已在实体机器人上进行展示

    原文地址: https://blogs.nvidia.com/blog/isaac-generative-ai-manufacturing-logistics/ 项目GR00T为人型机器人开发谢幕 在 ...