搜索

pdf文档 TypeScript 类型系统

1.27 MB 25 页 0 下载 162 浏览 0 评论 0 收藏
语言 格式 评分
中文(简体)
.pdf
3
摘要
文档介绍了TypeScript的基础类型系统,包括void、unknown、never、number、boolean、string等类型。文档还讨论了结构类型系统,指出即使两个结构完全一致,也不能互相赋值。此外,文档提到了高级类型如数组类型、接口类型和函数类型,以及特殊类型如any、null、undefined等。文档还展示了TypeScript如何编译为ES5/ES6兼容的JavaScript代码。
AI总结
## TypeScript 类型系统总结 ### 1. 基础类型 - **数字类型**:`let num: number;` - **布尔类型**:`let flag: boolean;` - **字符串类型**:`let str: string;` - **null 和 undefined**:`let y: number; y = null;` 和 `let z: string; z = undefined;` - **void 类型**:表示函数没有返回值,`function func(): void {}` - **unknown 类型**:作为顶级类型,兼容所有类型,`let foo: unknown;` - **never 类型**:作为底部类型,表示函数不会返回,`let bar: never;` ### 2. 结构类型系统 - 结构类型系统要求类型形状一致才能互相赋值。例如: ```typescript struct Person1 { name: string; age: int; } struct Person2 { name: string; age: int; } Person2 p2 = p1; // 报错:无法从 Person1 转换为 Person2 ``` - 接口(interface)定义类型形状,即使两个接口结构一致,也不能直接赋值: ```typescript interface Person1 { name: string; age: number; } interface Person2 { name: string; age: number; } let p1: Person1 = { name: 'xxx', age: 23 }; let p2: Person2 = p1; // 报错:无法从 Person1 赋值给 Person2 ``` ### 3. 高级类型 - **数组类型**:`let arr: number[];` - **函数类型**:定义函数签名,`type Callback = () => void;` - **枚举类型**:`enum Tristate { False = 'False', True = 'True', Unknown = 'Unknown';}` ### 4. 类型断言与守卫 - **类型断言**:使用 `as` 进行类型转换。 - **类型守卫**:通过条件语句收敛变量类型,支持 `typeof`、`instanceof`、`in` 等判断。 ### 5. 工具类型 - **Record**:定义键值对类型,`type Record = { [P in K]: T; };` - **其他Utility Types**:提供额外的类型操作工具。 ### 6. TypeScript 到 JavaScript - TypeScript 通过编译器(`tsc`)将 `.ts` 文件转换为符合 ES5/ES6 的 JavaScript 文件。 ### 7. 特殊类型 - **any 类型**:兼容所有类型,关闭类型检查,`let x: any;` - **null 和 undefined**:可以赋值给任意类型。 ### 总结 TypeScript 是 JavaScript 的静态类型超集,通过类型系统增强了代码的可维护性和可理解性。其核心包括基础类型、结构类型系统、高级类型、类型断言与守卫,以及工具类型等,帮助开发者更高效地管理代码复杂性。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 18 页请下载阅读 -
文档评分
请文明评论,理性发言.