在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
项目里使用到的技巧,记录一下,会持续更新。 JS的技巧完全可以使用到TS上哦。 向下取整Math.floor(4.5); // 4 简写: var num = 4.5; ~~num; num << 0; num >> 0; num >>> 0; 四种写法都会返回向下取整后的值,即4。 但是要注意,简写的方式用在负数上会得到错误的结果: Math.floor(-4.1); // -5 ~~-4.1; // -4 -4.1 << 0; // -4 -4.1 >> 0; // -4 -4.1 >>> 0; // 4294967292 或者说在负数上变成了向上取整,另外由于 >>> 是无符号的位移操作,所以会得到一个巨大的正数。另外一点:没有 <<< 这个操作符哦。 字符串转数字parseInt("4.5"); // 4 parseFloat("4.5"); // 4.5 parseInt({a:1}); // NaN 简写: var num = "4.5"; +num; // 4.5 num = {a:1}; +num; // NaN 转Boolean值Boolean(5.99); // true Boolean(0); // false Boolean(1); // true Boolean(null); // false Boolean(undefined); // false Boolean(""); // false Boolean("1"); // true Boolean({}); // true 简写: !!5.99; // true !!0; // false !!1; // true !!null; // false !!undefined; // false !!""; // false !!"1"; // true !!{}; // true void 0如果编写的代码会直接发布,尽可能用 void 0 代替 null 和 undefined,因为在某些浏览器中,undefined可以被赋值导致判断全部错误。 比如在TS中,编译后,使用到的undefined都会替换为 void 0。 TS多使用接口方式比如传递参数时,这么写: func(a: Point); 只能接受Point类型的变量,如果用下面的写法: func(a: {x:number, y:number}); 就可以接受带有x和y的所有变量,可以更好的复用该函数。 快速得到属性一般的写法: let x = point.x;
let y = point.y;
简写: let {x, y} = point; 一般的写法: let arr = "100;200;300".split(';'); let a = arr[0]; let b = arr[1]; let c = arr[2]; 简写: let [a, b, c] = "100;200;300".split(';'); 快速写入属性一般的写法: let a = 0; let b = "heelo"; let obj = {a: a, b: b}; 简写: let a = 0; let b = "heelo"; let obj = {a, b}; 参数类类型控制比如我们需要传递一个参数,该参数是MyClass类的类型,而不是实例时,一般只能用any,实际上是可以指定类型的,写法如下: public func(classType: { new(): MyClass }): void; 传入类型,得到该类型的实例一般用于工厂或对象池等: export function getInstance<T>(Class: {new () : T}): T { return new Class(); } 单例的简写方式static get instance(): Obj { return this._instance || (this._instance = new Obj()); } 类属性控制interface IObj { // 可选属性 name?: string; // 只读属性 readonly age: number; } 控制动态属性: interface Map<T> {
[key: string]: T;
}
用接口来规范一个对象比如我们有一个接口,可以用下面的方法来规范一个对象,而不用编写一个实现该接口的类: 1 export interface IPoint { 2 x: number; 3 y: number; 4 } 5 6 export function foo(point: IPoint) { 7 // ... 8 } 9 10 foo(<IPoint> {x: 100, y: 100}); 如果打错属性名称或缺少必须的属性会报错,属性类型不匹配也会报错,可以大大降低写错的问题。另外添加额外属性是允许的。
|
请发表评论