Silentdoer

导航

Typescript零碎总结

一、前言,公司用的angular项目用到了typescript,所以这里记录一些对自己有用的;

1.typescript里Dom元素类型是HTMLElement(在ts的lib.dom.d.ts里声明),比如angular里elementRef.nativeElement返回的值的类型就可以指定为HTMLElement,这样方便提示属性;

2.typescript里constructor方法里的形参如果是有public,private,protected修饰,那么这个形参是对应类的属性;

3.typescript里的as关键字很好用,比如返回了一个JSON对象,但是我们知道它是A类型,所以希望obj.的时候会有属性提示,就可以obj = obj as A;js什么时候也提供这个功能就好了,否则每次都需要写方法来转换;

4.typescript里默认是public,为了兼容js,而且返回类型和参数类型是可以不写的(强校验下可能不允许)

5.typescript里如果是前端项目,那么和js一样也是存在document和window和console全局对象(所以自己定义的普通变量或者变量都不要用这些名字)

6.xx.d.ts文件可以不用管它,它是一个描述文件(貌似是工具自动生成的文件,不是开发人员编写的)

7.npm安装其实基本上都是从git里下载文件,所以自己手动下载git项目来本地引用也是一样的。(不过通过npm下载的可能会和git里的有一点不一致,一般是npm下载的是除了源码还包括了编译后的内容,如编译成es5;

 

8.typescript里有可选参数/可选属性的概念,即调用某个方法时可选参数可以不填默认为undefined,创建某个对象时其可选属性可以在构造方法或者字段定义里没有初始值,此时其默认值为undefined;

但是局部变量是没有可选的概念的。。。;

可选属性其实本质上就是prop: a_type|undefined = undefined的定义(没有null,真操蛋,不想理会undefined类型),所以不要用可选变量,直接用其底层定义即可,即a_type|null

可选属性如果是inteface里是无法用上面的替换的,,因为interface里不能写默认值。。

可以自己定义如下类型:type option = null | undefined,type Optional<T> = T | null | undefined

可选属性优先于类型定义,即aa?: string里aa的类型没有加|undefined,这里aa也能有undefined值;

不要用可选属性和可选参数,垃圾(个人不喜欢),就用自定义的option和Optional,或者干脆就是string|null不要undefined(但是IO model是需要undefined的。。)

9.类型没软用。。用JSON.parse是不会判断类型的。

 

10.typescript里接口也可以new,典型的就是Date接口,它的inteface定义里有个new(): Date;方法,和new(value: number | string): Date;方法

posted on 2020-04-09 15:15  Silentdoer  阅读(310)  评论(0编辑  收藏  举报