TypeScript 面试题


TypeScript 面试题

  1. 什么是 TypeScript 的优势?

    TypeScript 提供了静态类型检查、更好的工具支持以及更丰富的面向对象编程特性。它可以提高代码的可维护性、可读性和可靠性,并且可以在开发阶段捕获潜在的错误。

  2. 什么是类型断言(Type Assertion)?如何在 TypeScript 中使用类型断言?

    类型断言允许开发者手动指定变量的类型。在 TypeScript 中,可以使用尖括号语法或者 as 关键字进行类型断言。例如:

    typescript 复制代码
    let value: any = "Hello, TypeScript!";
    let length1: number = (<string>value).length; // 使用尖括号语法
    let length2: number = (value as string).length; // 使用 as 关键字
    ```
  3. 什么是可选属性和只读属性?如何在接口中定义它们?

    可选属性允许对象中的某些属性可以不必全部存在,而只读属性则表示属性值在创建后不能被修改。在 TypeScript 中,可以使用问号 ? 来定义可选属性,使用 readonly 关键字来定义只读属性。例如:

    typescript 复制代码
    interface Person {
      name: string;
      age?: number; // 可选属性
      readonly id: number; // 只读属性
    }
    
    let person: Person = { name: "Alice", id: 123 };
    person.age = 20; // 可选属性可以不指定
    person.id = 456; // 错误,只读属性不能修改
    ```
  4. 什么是命名空间(Namespace)?请举例说明如何在 TypeScript 中使用命名空间。

    命名空间是用来组织和封装代码的一种方式,它可以避免全局命名冲突。在 TypeScript 中,可以使用命名空间关键字 namespace 来定义命名空间。例如:

    typescript 复制代码
    // math.ts
    namespace MathUtils {
      export function add(x: number, y: number): number {
        return x + y;
      }
    }
    
    // app.ts
    let result = MathUtils.add(3, 5);
    console.log(result); // 输出:8
    ```
  5. TypeScript 中的类型别名和接口有什么区别?什么时候应该使用类型别名?

    类型别名(Type Alias)和接口(Interface)都可以用来描述类型,但它们有一些区别。接口创建了一个新的命名类型,而类型别名为现有类型提供了一个别名。通常在以下情况下应使用类型别名:

    • 当需要联合多个类型时,可以使用联合类型别名;
    • 当需要使用元组(Tuple)类型时,可以使用元组类型别名;
    • 当需要使用复杂的类型操作符(如联合类型、交叉类型等)时,可以使用类型别名。

    例如:

    typescript 复制代码
    type Status = "success" | "error";
    type Point = [number, number];
    type Shape = Square | Circle;
    
    interface Square {
      kind: "square";
      size: number;
    }
    
    interface Circle {
      kind: "circle";
      radius: number;
    }
    ```

相关推荐
猫猫不是喵喵.4 分钟前
Vue3 Props 属性
前端·javascript·vue.js
醉城夜风~1 小时前
CSS元素显示模式(display)
前端·css
AI大模型-小华2 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
做前端的娜娜子4 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
小帅不太帅4 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek
jarvisuni5 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
卷福同学6 小时前
AI编程出海第二步:验证关键词能否做站
前端·人工智能·后端
赵庆明老师6 小时前
Vben精讲:21-详解web-antd:tsconfig.json
前端·json·vim
wc886 小时前
微软EDGE浏览器功能学习
前端·学习·edge