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 ...
随机推荐
- 适用于PyTorch 2.0.0的Ubuntu 22.04上CUDA v11.8和cuDNN 8.7安装指南
将下面内容保存为install.bash,直接用shell执行一把梭解决 #!/bin/bash ### steps #### # verify the system has a cuda-capab ...
- 完美卸载Docker
1,删除docker所在目录 rm -rf /etc/docker rm -rf /run/docker rm -rf /var/lib/dockershim rm -rf /var/lib/dock ...
- oeasy教您玩转vim - 15 - # 行内查找
行头行尾 回忆上节课内容 上次学了直接跳到开头和结尾 最重要的就是 ^.$ ^ 到开头 $ 到结尾 I 相当于^i A 相当于$a 查找帮助 还有什么呢? 还是继续在 motion 里面 ^ .$ 之 ...
- [oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程
查看进程 回忆上次内容 上次先ctrl + z 挂起进程 然后运行 bg 编辑 程序继续跑起来 而且不断输出到标准输出流 甚至连ctrl + c 都无法结束进程了 这可怎么办呢? 只能新开一个 ...
- 题解:P10677 『STA - R6』inkar-usi
背景 把人家鸽了,感觉废了. 分析 这道题刚看到题目的时候很多人会想爆搜,但是因为 \(10^3\) 的数据范围,所以应该去想一想是不是有什么性质. 我们稍微想一想就会发现,题目上提到了可以重复走,那 ...
- OpenGL 三角形颜色插值
1.最懒的方法--Nearest Neighbor对于三角形内的点,离三个顶点谁最近,就赋值为那个顶点对应的颜色. 2.最天真的方法--Distance三角形内一点的值应该来自于三个顶点. 计算距离: ...
- .NET 开源快捷的数据库文档查询和生成工具
前言 在实际项目开发中,需求变更和项目迭代是常态.要求我们能够迅速响应,对数据库结构进行相应的调整,如添加新表.更新现有表结构或增加字段等. 为了确保团队成员之间的信息同步,实时更新和维护数据库文档变 ...
- 【MySQL】 线上补数据SQL
昨天一下午就为了补业务数据,写SQL快崩溃了得... 直接贴不解释了 -- 先拿到[销售变更id]拿到[变更信息] -- 通过[变更信息]的主表id拿到[主表信息] -- 条件可以是 MAX(cc.i ...
- 【Java】ElasticSearch 在项目里的应用
一.前言: 好久没写笔记了,最近忙一个项目,用到ES查询,以往的笔记写ES都是搭建环境,用Kibana玩一玩 这次是直接调用API操作了,话不多说,进入主题 二.环境前提: 公司用的还是纯Elasti ...
- Jax的加速层的伪代码/中间层代码的生成和查看
地址: https://jax.readthedocs.io/en/latest/notebooks/thinking_in_jax.html#jit-mechanics-tracing-and-st ...