如何通过TypeScript面试:热门问题

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

如何通过TypeScript面试:常见问题与示例



TypeScript已牢固确立为JavaScript企业级开发的标准。如果你正在准备面试,重要的不仅是掌握语法,还要理解类型、泛型和工具类型的工作方式。本文梳理了技术面试中经常问到的热门问题,并附有详细解答和代码示例。



无论你是初级开发者,还是想在重要面试前巩固知识,这份材料都将对你有帮助。



1. 什么是TypeScript?为什么需要它?



TypeScript是JavaScript的一个严格类型超集,可编译为纯JS。其主要目标是添加静态类型,从而能够:

  • 在编译时而非运行时捕获错误。
  • 提升代码的可读性和可维护性。
  • 在IDE中获得自动补全和重构功能。


示例:

// JavaScriptfunction add(a, b) {  return a + b; // a 和 b 可以是任何类型}

// TypeScriptfunction add(a: number, b: number): number { return a + b; // 如果传入字符串,编译时报错}


在面试中,要强调TypeScript 并不取代 JavaScript,而是对其补充,使代码更加安全。



2. 基础类型及其用法



TypeScript提供了丰富的基础类型。关于这一主题的题目会考察你对类型系统的理解程度。



列举主要类型:

  • number、string、boolean
  • null、undefined
  • any — 禁用类型检查(尽量避免使用)
  • void — 用于不返回任何值的函数
  • never — 用于永不结束的函数(例如抛出异常)


联合类型示例:

type Status = 'active' | 'inactive' | 'pending';let userStatus: Status = 'active'; // 只能是这三个值之一


经常会被问到interface和type的区别。回答要点:interface可以扩展(extends),而type不能。对于对象,优先使用interface;对于原始类型和联合类型,更适合使用type。



3. 泛型——灵活性的基础



泛型允许你创建能处理不同类型、同时不丢失类型安全性的组件。这是最常见的面试题之一。



简单泛型示例:

function identity<T>(arg: T): T {  return arg;}const result = identity<string>('hello'); // 类型为 stringconst numberResult = identity(42); // 类型为 number(类型推断)


问题:如何约束泛型?

使用extends关键字:

function getLength<T extends { length: number }>(arg: T): number {  return arg.length;}getLength('hello'); // 5getLength([1,2,3]); // 3// getLength(123); // 错误:number 没有 length 属性


还会被问到接口中的泛型:

interface ApiResponse<T> {  data: T;  status: number;  error?: string;}const userResponse: ApiResponse<{ id: number; name: string }> = {  data: { id: 1, name: 'Alice' },  status: 200};


4. 工具类型



TypeScript内置的工具类型简化了类型操作。掌握它们是经验丰富的开发者的标志。



需要了解的5个常用工具类型:

  • Partial<T> — 将所有字段变为可选。
  • Required<T> — 将所有字段变为必选。
  • Pick<T, K> — 仅选取指定的键。

博客

书籍推荐