- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
TypeScript
进阶指南
原始类型与对象类型
在JavaScript中,null与undefined分别表示“这里有值,但是个空值”和“这里没有值”。在TypeScript中,null与undefined类型都是有具体意义的类型。
在TypeScript中,void用于描述一个内部没有return语句,或者没有显式return一个值的函数的返回值。
使用元组能帮助我们进一步提升数组结构的严谨性,包括基于位置的类型标注、避免出现越界访问等等。
typescript
constarr7:[name:string,age:number,male?:boolean]=[heora,24,true]
constarr1:string[]=[]const[ele1,ele2,...rest]=arr1
推荐使用interface描述对象、类的结构。使用类型别名用来将一个函数签名、一组联合类型、一个工具类型等等抽离成一个完整独立的类型。大部分场景下接口结构都可以被类型别名所取代,因此,只要你觉得统一使用类型别名让你觉得更整齐,也没什么问题。
Object、object、{}
在任何时候都不要使用Object以及类似的装箱类型。
当你不确定某个变量的具体类型,但能确定它不是原始类型,可以使用object。
使用Recordstring,unknown或Recordstring,any表示对象
使用unknown[]或any[]表示数组使用(...args:any[])=any表示函数避免使用{}
uniquesymbol
Symbol在JavaScript中代表着一个唯一的值类型,它类似于字符串类型,可以作为对象的属性名,并用于避免错误修改对象/Class内部属性的情况。
在TypeScript中,symbol类型并不具有这一特性,一百个具有symbol类型的对象,它们的symbol类型指的都是TypeScript中的同一个类型。
TypeScript中支持uniquesymbol一类型声明,它是symbol类型的子类型,每一个uniquesymbol类型都是独一无二的。
typescript
constsymbolFoo:symbol=Symbol(heora)constsymbolBar:symbol=symbolFoo
constuniqueSymbolFoo:uniquesymbol=Symbol(heora)
//类型不兼容
constuniqueSymbolBar:uniquesymbol=uniqueSymbolFoo
在JavaScript中,我们可以用Symbol.for方法来复用已创建的Symbol,如
Symbol.for(heora)会首先查找全局是否已经有使用heora作为key的Symbol注册,如果有,则返回这个Symbol,否则才会创建新的Symbol。
在TypeScript中,如果要引用已创建的uniquesymbol类型,则需要使用类型查询操作符typeof:
typescript
declareconstuniqueSymbolFoo:uniquesymbol;
constuniqueSymbolBaz:typeofuniqueSymbolFoo=uniqueSymbolFoo
字面量类型与枚举
字面量类型主要包括字符串字面量类型、数字字面量类型、布尔字面量类型和对象字面量类型,它们可以直接作为类型标注。
单独使用字面量类型比较少见,因为单个字面量类型并没有什么实际意义。它通常和联合类型一起使用,表达一组字面量类型:
typescript
interfaceRes{code:10000|10001|50000
status:success|failuredata:any
}
无论是原始类型还是对象类型的字面量类型,它们的本质都是类型而不是值。它们在编译时同样会被擦除,同时也是被存储在内存中的类型空间而非值空间。
联合类型代表一组类型的可用集合,只要终赋值的类型属于联合类型的成员之一,就可以认为符合这个联合类型。
typescript
typeCode=10000|10001|50000
typeStatus=success|failure
对于联合类型中的函数类型,需要使用括号()包裹起来函数类型并不存在字面量类型,因此这里的(()={})就是一
您可能关注的文档
最近下载
- 发那科机器人DCS双重安全性检查功能说明书FANUC.pdf VIP
- 汽轮机课程设计dc.docx VIP
- 创伤中心季度质控.pptx VIP
- 武汉大学 2011-2012 学年第二学期期末考试线性代数 B 试题(A) .docx VIP
- DBJ51T033-2020 四川省既有建筑增设电梯工程技术标准.pdf VIP
- 货物采购项目实施方案.doc VIP
- GB T 3000-2016 致密定形耐火制品 透气度试验方法.pdf
- 31、《做最勇敢的自己》.pptx VIP
- 南京邮电大学 20202021 学年第一学期《 微观经济学》期末考试试卷.pdf VIP
- DB13∕T 5603-2022 工贸行业非高危建设项目安全设施“三同时”报告编制导则.docx VIP
原创力文档


文档评论(0)