ts 的骚操作
source link: https://www.v2ex.com/t/844056
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
ts 的骚操作
(function (Cute) {
Cute[Cute["Red"] = 2] = "Red";
Cute[Cute["Blue"] = 3] = "Blue";
Cute[Cute["Yellow"] = 4] = "Yellow";
})(Cute || (Cute = {}));
var cc = Cute.Blue;
console.log(Cute,cc, 892);
key 和 value 互换。·
key 里完成了一次赋值操作 ,很骚·
matthewzhong 15 小时 58 分钟前
murmur 15 小时 57 分钟前
这不是更骚
superfatboy 15 小时 56 分钟前
libook 15 小时 56 分钟前 1
这个说是 ts 代码,但实际上完全兼容 js 代码,没有任何 ts 附加特性。
这种互换没啥意义,程序已知 2\3\4 和 Red\Blue\Yellow 的时候,完全可以直接 Cute[2]="Red",key 里面堆这么多都是废话。
而且原本的 key 都没去掉,只是给 Cute 对象增加了 2/3/4 这三个新 key ,造成了数据冗余,除非很确定后续会同时用到这两套 key ,但为了 debug 没那么痛苦我依然建议分成两个对象来分别存储。
更有实际意义的是当 key 和 value 都是动态变化的情况下进行互换,但其实一个循环就能搞定了。
这样的代码很可能过不了 code review……
DOLLOR 15 小时 53 分钟前
enum 是我觉得 ts 里最迷惑的地方,我从来不用。
anjianshi 15 小时 53 分钟前
试试下面的?
```
// 原版本
var Cute;
(function (Cute) {
Cute[(Cute["Red"] = 2)] = "Red";
Cute[(Cute["Blue"] = 3)] = "Blue";
Cute[(Cute["Yellow"] = 4)] = "Yellow";
})(Cute || (Cute = {}));
var cc = Cute.Blue;
console.log('A', Cute, cc);
// 改良版
var Cute2 = [['Red', 2], ['Blue', 3], ['Yellow', 4]].reduce(function (o, pair) {
return {
...o,
[pair[0]]: pair[1],
[pair[1]]: pair[0]
}
}, {})
var cc2 = Cute2.Blue;
console.log('B', Cute2, cc2);
// 改良精简版
var Cute3 = [['Red', 2], ['Blue', 3], ['Yellow', 4]].reduce((o, [k, v]) => ({ ...o, [k]: v, [v]: k }), {})
var cc3 = Cute3.Blue;
console.log('C', Cute3, cc3);
```
nulIptr 15 小时 52 分钟前 1
建议讨论一下
const int const *a,b;里面 b 是什么类型
int i=0;int b=++i+i+++++i;里面 b 的值是多少
magewu1223ll 15 小时 52 分钟前
mxT52CRuqR6o5 15 小时 36 分钟前 via Android
gdrk 15 小时 30 分钟前
davin 14 小时 12 分钟前
fstar 14 小时 4 分钟前
https://www.typescriptlang.org/docs/handbook/enums.html#reverse-mappings
enum Cute {
Red = 2,
Blue,
Yellow
}
没啥问题,编译用的模板越紧凑越好。
catinsides 13 小时 24 分钟前 3
ts 编译结果后中的骚操作
又是 code review ,又是改良的,不愿再笑
ychost 12 小时 27 分钟前
wunonglin 12 小时 7 分钟前
zhwithsweet 11 小时 47 分钟前
enchilada2020 11 小时 42 分钟前 via Android
IvanLi127 8 小时 50 分钟前 via Android
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK