TypeScript 面试题

发布时间:2024年01月15日

TypeScript 面试题

  1. 什么是 TypeScript?

    TypeScript是一种开源的编程语言,是JavaScript的超集,它通过添加静态类型、类、模块和接口等概念,为JavaScript提供了更丰富的功能和更强大的工具支持。

  2. TypeScript中的类型注解和类型推断有什么区别?

    类型注解是开发者显式地为变量或函数参数添加类型信息,例如:

    let message: string = "Hello, TypeScript!";
    function add(x: number, y: number): number {
      return x + y;
    }
    ```
    类型推断是编译器根据上下文自动推断变量或函数参数的类型,例如:
    ````typescript
    let message = "Hello, TypeScript!"; // 推断为 string 类型
    function add(x: number, y: number) { // 推断返回值类型为 number
      return x + y;
    }
    ```
    
    
  3. 什么是接口(Interface)?在 TypeScript 中如何使用接口?

    接口是用于定义对象的结构和类型的规范。在 TypeScript 中,可以使用接口来描述对象的属性、方法以及类的实现等。例如:

    interface Person {
      name: string;
      age: number;
      greet(): void;
    }
    
    class Student implements Person {
      name: string;
      age: number;
    
      constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
      }
    
      greet() {
        console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
      }
    }
    
    let student = new Student("Alice", 20);
    student.greet(); // 输出:Hello, my name is Alice and I'm 20 years old.
    ```
    
    
  4. 什么是泛型(Generics)?如何在 TypeScript 中使用泛型?

    泛型是用于创建可重用的组件的工具,它允许我们在编写代码时指定类型参数。在 TypeScript 中,可以使用泛型来创建函数、类和接口等。例如:

    function identity<T>(arg: T): T {
      return arg;
    }
    
    let output = identity<string>("Hello, TypeScript!"); // 指定泛型类型为 string
    console.log(output); // 输出:Hello, TypeScript!
    ```
    在上面的例子中,`identity` 函数使用了泛型类型参数 `<T>`,并且参数 `arg` 和返回值类型都使用了该泛型类型。
    
    
  5. TypeScript中的模块化是如何工作的?

    TypeScript支持使用模块来组织和封装代码。模块可以将代码分割为多个文件,使得代码更加可维护和复用。通过使用模块关键字 importexport,可以在不同的文件之间共享类型、变量、函数和类等。例如:

    // math.ts
    export function add(x: number, y: number): number {
      return x + y;
    }
    
    // app.ts
    import { add } from "./math";
    
    let result = add(3, 5);
    console.log(result); // 输出:8
    ```
    
    

文章来源:https://blog.csdn.net/qq_42431718/article/details/135596568
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。