- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TypeScript 2.0介绍
TypeScript 2.0介绍
Null和undefined类型
TypeScript现在有两个特殊的类型:Null和Undefined , 它们的值分别是null和
undefined。 以前这是不可能明确地命名这些类型的 但是现在 null和
undefined不管在什么类型检查模式下都可以作为类型名称使⽤。
以前类型检查器认为null和undefined赋值给⼀切。实际上 null和undefined
是每⼀个类型的有效值 并且不能明确排除它们 (因此不可能检测到错误)。
--strictNullChecks
--strictNullChecks可以切换到新的严格空检查模式中。
在严格空检查模式中 null和undefined值不再属于任何类型的值 仅仅属于它们
⾃⼰类型和any类型的值 (还有⼀个例外 undefined也能赋值给void)。因此
尽管在常规类型检查模式下T和T | undefined被认为是相同的 (因为 undefined
被认为是任何T的⼦类型) 但是在严格类型检查模式下它们是不同的 并且仅仅 T
| undefined允许有undefined值 T和T | null的关系同样如此。
⽰例
// 使⽤--strictNullChecks参数进⾏编译的
let x : number;
let y : number | undefined;
let z: number | null | undefined;
x = ; // 正确
y = ; // 正确
z = ; // 正确
x = undefined; // 错误
y = undefined; // 正确
z = undefined; // 正确
x = null; // 错误
y = null; // 错误
z = null; // 正确
x = y; // 错误
x = z; // 错误
y = x; // 正确
y = z; // 错误
z = x; // 正确
z = y; // 正确
使⽤前赋值检查
在严格空检查模式中 编译器要求未包含undefined类型的局部变量在使⽤之前必
须先赋值。
⽰例
// 使⽤--strictNullChecks参数进⾏编译
let x : number;
let y : number | null;
let z: number | undefined;
x; // 错误,使⽤前未赋值
y; // 错误,使⽤前未赋值
z; // 正确
x = ;
y = null;
x; // 正确
y; // 正确
编译器通过执⾏基于控制流的类型分析检查变量明确被赋过值。在本篇⽂章后⾯会有
进⼀步的细节。
可选参数和属性
可选参数和属性会⾃动把undefined添加到他们的类型中 即使他们的类型注解明
确不包含undefined。例如 下⾯两个类型是完全相同的:
// 使⽤--strictNullChecks参数进⾏编译
type T = (x?: number) = string; // x的类型是 number |
type T2 = (x?: number | undefined) = string; // x的类型是 number |
⾮null和⾮undefined类型保护
如果对象或者函数的类型包含null和undefined 那么访问属性或调⽤函数时就会
产⽣编译错误。因此 对类型保护进⾏了扩展 以⽀持对⾮null和⾮undefined的检
查。
⽰例
// 使⽤--strictNullChecks参数进⾏编译
declare function f(x : number): string;
let x : number | null | undefined;
if (x) {
f(x); // 正确,这⾥的x类型是number
}
else {
f(x); // 错误,这⾥的x类型是number?
}
let a = x != null ? f(x) : ; // a的类型是string
let b = x f(x); // b的类型是 string | 0 | null | undefined
⾮null和⾮undefined类型保护可以使⽤==、
您可能关注的文档
- 第二章 STM32_推动创新,见证未来.pdf
- 音响速成200例摘要.doc
- 血常规整理后要领.ppt
- 2015年考研心理学考研之实验心理学笔记.pdf
- 艺术设计学科前沿讲座论文幻灯片.doc
- 第十一章 北大95心理学研究生真题.doc
- LED灯具的组成、特点与注意事项.doc
- 六运会VI手册教案.pdf
- 第九章 北语对外汉语考研总结.doc
- 标准圆钻式琢型的加工顺序及方法.doc
- 国开景区管理作业2试题及答案.pdf
- 国开景区管理作业1-4试题及答案.pdf
- 河南开放大学本科《地域文化(本)》作业练习1-3试题及答案.pdf
- 2024年大型游乐设施操作证考试题库及答案很全.pdf
- 2024年门座式起重机司机考试题库及答案.pdf
- 2022-2023学年河北省衡水市武强中学高二(下)期末数学试卷【答案版】.docx
- 2022-2023学年河北省保定市崇德实验中学高二(下)期末数学试卷【答案版】.docx
- 江西省2017年中小学教师招聘考试高中化学试卷及答案.docx
- 2024年河北省八年级中考生物真题(解析版).docx
- 2024年南阳市社会保险中心(唐河县企业养老保险分中心)(参公)一级科员招录1人《行政职业能力测验》高频考点、难点(答案详解版).docx
文档评论(0)