Rowan Liu
Rowan Liu
在 TypeScript 中,类型检查是通过静态类型系统进行的,这个系统在编译时检查代码,以确保类型的正确性。TypeScript 提供了多种类型和类型检查机制,帮助开发者在编写代码时捕获潜在的错误。以下是 TypeScript 中进行类型检查的主要方式和示例: ### 基本类型检查 1. **基本类型** TypeScript 支持 JavaScript 的所有基本类型,并提供类型注解来进行类型检查。 ```typescript let isDone: boolean = false; let decimal: number = 6; let color: string = "blue";...
这个问题也可能是问 Typescript 内部是如何判断类型正确与否的。那么对应的答案如下: TypeScript 通过编译器来处理类型检查。TypeScript 编译器(`tsc`)在编译过程中执行类型检查,并生成相应的 JavaScript 代码。以下是 TypeScript 编译器如何处理类型检查的详细过程: ### 类型系统的工作原理 1. **解析和语法分析** 编译器首先读取 TypeScript 文件,并进行词法分析和语法分析。词法分析将代码拆分成词法单元(tokens),语法分析则基于这些词法单元构建抽象语法树(AST)。 2. **语义分析** 语义分析阶段,编译器检查代码的逻辑结构,并在语法树的基础上进行类型检查。它会根据上下文和类型注解推断变量、函数和类的类型。这一阶段是类型检查的核心部分。 ### 类型检查的关键步骤 1. **类型推断** TypeScript 编译器具有强大的类型推断能力,即使没有显式的类型注解,编译器也能根据上下文推断出变量和表达式的类型。例如: ```typescript let x =...
这里提到了**联合类型、交叉类型和条件类型**,这里做个解释: 下面是 TypeScript 中联合类型、交叉类型和条件类型的详细解释和示例: ### 联合类型(Union Types) 联合类型允许一个值可以是几种类型之一,用 `|` 分隔多个类型。 #### 示例: ```typescript function printId(id: number | string) { if (typeof id === "string") { console.log(`ID: ${id.toUpperCase()}`); } else {...
This https://github.com/haizlin/fe-interview/issues/5472 includes current issue.
在 TypeScript 中,类型推断是指编译器根据代码的上下文自动推断出变量、参数、函数返回值等的类型,而不需要显式地声明类型。TypeScript 的类型推断机制非常强大,可以帮助开发者减少类型注释,提高代码的可读性和可维护性。以下是一些主要的类型推断场景和示例: ### 1. 变量类型推断 当你声明一个变量并赋值时,TypeScript 会根据赋值的表达式推断出变量的类型。 ```typescript let x = 10; // x 的类型被推断为 number let y = "hello"; // y 的类型被推断为 string let z = true;...
TypeScript 中的装饰器是一种特殊的声明,它能够附加到类声明、方法、访问符、属性或参数上,用于修改类的行为。装饰器在应用开发中有很多场景,特别是在元编程、依赖注入、日志记录、验证和缓存等方面。以下是一些常见的装饰器应用场景(常见场景见 https://github.com/haizlin/fe-interview/issues/5508 )和示例: ### 1. 依赖注入 装饰器可以用于实现依赖注入,常用于 Angular 和 NestJS 等框架。 #### 示例: ```typescript function Injectable(constructor: Function) { // 注册依赖 } @Injectable class Service { getService() { return "Service...
在 TypeScript 中,模块系统用于将代码组织成独立的文件和片段。通过模块,你可以将代码拆分成多个文件,并在这些文件之间共享代码。TypeScript 支持两种模块语法:ES6 模块和 CommonJS 模块。以下是如何定义、导入和导出模块的详细说明。 ### 使用 ES6 模块 #### 1. 定义和导出模块 你可以使用 `export` 关键字导出变量、函数、类或接口。 ```typescript // math.ts export const PI = 3.14; export function add(a: number, b:...
在 TypeScript 中,联合类型(Union Types)是一种允许变量持有多种类型之一的类型。联合类型使用竖线(`|`)分隔多个类型,表示一个变量可以是这些类型中的任意一个。 ### 联合类型的定义和使用 #### 1. 基本示例 ```typescript let value: string | number; value = "Hello"; // 合法 value = 42; // 合法 // value = true; //...
https://github.com/haizlin/fe-interview/issues/5473 Same
TypeScript 和 JavaScript 的类有许多相似之处,因为 TypeScript 是基于 JavaScript 的超集,并且遵循 ES6(ECMAScript 2015)标准。然而,TypeScript 为类添加了一些额外的功能和类型安全机制,使其更适合于大型项目和复杂应用程序开发。以下是 TypeScript 类与 JavaScript 类之间的一些主要区别: ### 1. 类型注解 TypeScript 允许在类的属性、方法参数和返回值中使用类型注解,从而提供静态类型检查和更好的开发工具支持。 ```typescript class Person { name: string; age: number; constructor(name: string,...