1.數值常量,替換無心義的switch 中case 0 ,1 。。。bash
enum Direction {
Up = 1,
Down,
Left,
Right
}複製代碼
此時,常量Down,是根據Up ,+1,計算獲得。ide
數值常量枚舉的規則以下:函數
數字字面量引用以前定義的常數枚舉成員(能夠是在不一樣的枚舉類型中定義的) 若是這個成員是在同一個枚舉類型中定義的,能夠使用非限定名來引用。帶括號的常數枚舉表達式+, -, ~ 一元運算符應用於常數枚舉表達式+, -, *, /, %, <<, >>, >>>, &, |, ^ 二元運算符,常數枚舉表達式作爲其一個操做對象。 若常數枚舉表達式求值後爲NaN或Infinity,則會在編譯階段報錯複製代碼
2.字符串常量ui
enum Direction {
LEFT = "left",
RIGHT = "right"
}複製代碼
3.返回根據參數類型,返回相同類型,此時用泛型。在函數或者類名、接口名字後添加<T>spa
function identity<T>(arg: T): T {
return arg;
}複製代碼
類似的,ts存在泛型接口、泛型類code
interface GenericIdentityFn<T> {
(arg: T): T;
}複製代碼
class GenericNumber<T> {
zeroValue: T;
add: (x: T, y: T) => T;
}複製代碼
更高級用法,添加泛型約束:對象
interface Lengthwise {
length: number;
}
function loggingIdentity<T extends Lengthwise>(arg: T): T {
console.log(arg.length); // Now we know it has a .length property, so no more error
return arg;
}複製代碼
4.約定一個對象的屬性,使用interface.接口
interface Line{ startime:number; endtime:number}複製代碼
5.three
1.如何判斷爲整數ip
Number.isInteger = Number.isInteger || function(value) {
return typeof value === "number" &&
isFinite(value) &&
Math.floor(value) === value;
};複製代碼
ps:
和全局函數 isNaN() 相比,該方法不會強制將參數轉換成數字,只有在參數是真正的數字類型,且值爲 NaN 的時候纔會返回 true。
Number.isNaN(NaN); // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0) // true
// 下面這幾個若是使用全局的 isNaN() 時,會返回 true。
Number.isNaN("NaN"); // false,字符串 "NaN" 不會被隱式轉換成數字 NaN。
Number.isNaN(undefined); // false
Number.isNaN({}); // false
Number.isNaN("blabla"); // false
// 下面的都返回 false
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN(37);
Number.isNaN("37");
Number.isNaN("37.37");
Number.isNaN("");
Number.isNaN(" ");複製代碼
Number.isNaN = Number.isNaN || function(value) {
return typeof value === "number" && isNaN(value);
}複製代碼
2. ES6 `${one}${two}${three}` 與Number.parseInt(str,2)使用
`${one}${two}${three}` 做爲狀態位,標識狀態
Number.parseInt(str,2),將十進制轉爲2進制數,某些狀況下,與上述能夠進行逆操做。
參考文獻:
1. JS doc