类型与变量 类型声明空间类型声明就是告诉 TypeScript这个东西是什么类型的语句。它就像是给变量、函数、对象等贴上的类型标签让 TypeScript 编译器知道该如何理解和检查你的代码。类型声明空间存储类型别名、接口、类类型部分interface User {}type ID string// 这些声明都进入类型声明空间 interface User { name: string; } // ✅ 进入类型空间 type ID string | number; // ✅ 进入类型空间 class Animal { name: string; } // ✅ 同时进入类型空间作为类型 enum Color { Red, Green } // ✅ 同时进入类型空间作为类型 // 这些不进入类型声明空间 const x 10; // ❌ 只进入变量空间 function foo() {} // ❌ 只进入变量空间type 可以用来定义别名纯类型空间居民type ID string | number; ID只能是string类型或者number类型type Status pending | success | error; 创建了一个叫 Status 的类型这个类型的值只能是 pending、success 或 error 这三个字符串中的一个。变量声明空间变量声明空间存储变量、函数、类值部分const x 1function foo() {}Class的双重身份双空间双空间公民意思是一个class声明同时做了两件事创建了一个类型在类型声明空间- 用于类型检查创建了一个构造函数在变量声明空间- 用于创建对象​ // ✅ 类同时存在于两个空间 class Person { name: string; constructor(name: string) { this.name name; } } // 作为类型使用类型声明空间 let p: Person; // 类型注解 // 作为值使用变量声明空间 const p2 new Person(Alice); // 创建实例 // ❌ interface 只存在于类型空间 interface Animal { species: string; } // 错误不能用作值 // const a new Animal(); // ❌ Animal 仅表示类型 ​// ✅ Person 作为类型使用 let person1: Person; // 声明变量类型 // 作为变量使用 let person1 Person // 变量代表Person的构造函数 console.log(typeof p) // function同名声明互相独立的两个空间// 同名标识符可以在两个空间中独立存在 type State string; // 类型空间 const State pending; // 变量空间不冲突 // 类的双重作用 class User { static type admin; // 类静态属性变量空间 name: string; // 实例属性类型空间的一部分 } // 类型别名与变量同名 type ID number; const ID 123; // ✅ 可以共存类型注解类型注解是显式告诉 TypeScript 变量、参数、返回值等应该是什么类型的语法。// 基本语法 let variable: type value;// 示例 let age: number 25; let name: string Alice; let isActive: boolean true; let items: string[] [a, b]; // 函数参数和返回值 function greet(name: string): string { return Hello, ${name}; } // 箭头函数 const add (a: number, b: number): number a b;类型推断TypeScript 能够在没有显式类型注解的情况下根据上下文自动推断出变量的类型。// 基础推断 let x 3; // 推断为 number let y hello; // 推断为 string let z [1, 2, 3]; // 推断为 number[] // 函数返回值推断 function sum(a: number, b: number) { return a b; // 推断返回类型为 number } // 上下文类型推断 window.onmousedown function(e) { // e 被推断为 MouseEvent 类型 console.log(e.button); };类型注解 vs 类型断言// 类型注解编译时检查限制赋值 let a: string | number hello; a 42; // ✅ 可以 // a true; // ❌ 类型不匹配 // 类型断言告诉编译器相信我我知道类型 const el document.getElementById(app) as HTMLDivElement; const value 123 as unknown as number; // 双重断言 // 断言语法 const val1 someValue as string; const val2 stringsomeValue; // JSX 中不推荐

相关新闻

最新新闻

深度学习复试项目-06:对05项目包装、面试问答

深度学习复试项目-06:对05项目包装、面试问答

项目归纳(用于自己回忆项目内容)项目目的:面向移动端设备拍摄的实景图像,解决实际场景中标注样本稀缺、人工标注成本高的问题。采用伪标签半监督学习方案,利用少量标注样本搭配大量无标注实景图像完成 11 类物体分类。…

2026/8/30 4:37:58
Angular工程化实战:从依赖注入到团队协作的取舍

Angular工程化实战:从依赖注入到团队协作的取舍

Angular 在技术选型会上的名声一直很微妙。有人嫌它重,有人担心学习曲线,有人觉得它早就被 React 和 Vue 比下去了。但很多团队最后仍然会选它,包括我们自己。原因是它足够“笨重”,而这种笨重恰好能把一群背景、经验、代码品味完…

2026/8/30 4:37:58
u3d序列化(Serialization)

u3d序列化(Serialization)

本文将分享u3d序列化相关知识,内容来源于官方,AI和个人理解 一.计算机领域的序列化概念 序列化,就是把内存中的对象,转换成可存储或可传输的文本或二进制的过程。反过来,把字节流恢复成内存对象,叫做反序列…

2026/8/30 4:37:58
AI如何自动识别商务偏离表废标风险?智能评审项目实践

AI如何自动识别商务偏离表废标风险?智能评审项目实践

这里写自定义目录标题欢迎使用Ma rkdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个…

2026/8/30 4:37:58
基于NestJS与LangchainJS构建企业级RAG知识库实战指南

基于NestJS与LangchainJS构建企业级RAG知识库实战指南

最近接触了几拨想做 AI 知识库的团队,发现一个特别普遍的起点:先找一个开源项目跑起来,上传几份 PDF,问几个问题,看到答案觉得“差不多了”,然后就开始讨论要不要接微信、要不要做用户权限、要不要加计费。…

2026/8/30 4:37:58
代码Agent与DeepSeek接入实战:原理、配置与排错

代码Agent与DeepSeek接入实战:原理、配置与排错

代码 Agent 正在成为开发者工具里变化最快的方向之一。DeepSeek 自研代码 Agent 上线的消息,让不少团队开始重新评估:是继续使用 Claude Code,还是切换到基于 DeepSeek 模型的代码 Agent 工具链。新闻标题虽然有“对标”两个字,但…

2026/8/30 4:32:58