如果你有一些问都不知道咋问的 TypeScript 问题,来这里翻翻或许能找到答案!

本文会不定期更新,我遇到的觉得值得分享的 TypeScript 问题都会写在这里

互斥类型

1
2
3
4
5
// https://github.com/Microsoft/TypeScript/issues/14094#issuecomment-373782604
type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never }
type XOR<T, U> = (T | U) extends object
? (Without<T, U> & U) | (Without<U, T> & T)
: T | U

使用上面的 XOR 范型,我们可以很容易地实现如下需求:

市面上目前最完美的 placeholder, 没有之一!和原生几乎没有任何区别。 项目地址

使用

1
2
3
4
5
6
<head>
<!--[if IE 8]>
<script src="https://cdn.jsdelivr.net/gh/aweiu/JsLibs/libs/js/fixJsForIE8.js"></script>
<script src="https://cdn.jsdelivr.net/gh/aweiu/JsLibs/libs/js/placeholder.js"></script>
<![endif]-->
</head>

网上搜索的看着都蛋疼。实现的太复杂,故精简如下:

1
2
3
4
5
6
7
8
9
10
11
function checkBankCard(cardNo) {
var tmp = true,
total = 0
for (var i = cardNo.length; i > 0; i--) {
var num = cardNo.substring(i, i - 1)
if (((tmp = !tmp), tmp)) num = num * 2
var gw = num % 10
total += gw + (num - gw) / 10
}
return total % 10 == 0
}

一直觉得湘湖的风景不次于西湖,且更有野趣

面积更大,不过每个角度看过去又都像个小鱼塘,事实上湖里也确实有不少鱼,要是可以随便钓就更美滋滋了