interview
typescript-frontend
TypeScript 的内置工具类型 ConstructorParameters 有什么作用

前端 TypeScript 面试题, TypeScript 的内置工具类型 ConstructorParameters 有什么作用?

前端 TypeScript 面试题, TypeScript 的内置工具类型 ConstructorParameters 有什么作用?

QA

Step 1

Q:: TypeScript 的内置工具类型 ConstructorParameters 有什么作用?

A:: ConstructorParameters 是 TypeScript 中的一个内置工具类型,用于获取构造函数类型(即类构造函数或函数类型)的参数类型列表。它的作用是将构造函数中的参数类型提取出来,并返回一个元组类型。具体来说,假设你有一个构造函数类型 T,使用 ConstructorParameters<T> 可以得到构造函数的参数类型组成的元组。例如:

 
class MyClass {
  constructor(public name: string, public age: number) {}
}
 
type Params = ConstructorParameters<typeof MyClass>;
// Params 为 [string, number]
 

这个工具类型在一些高级类型操作和泛型编程中非常有用。

Step 2

Q:: ConstructorParameters 与 Parameters 有什么区别?

A:: ConstructorParameters 和 Parameters 都是 TypeScript 中的工具类型,但它们的作用对象不同。ConstructorParameters 作用于构造函数类型,用于获取构造函数的参数类型组成的元组;而 Parameters 则作用于普通函数类型,用于获取函数的参数类型组成的元组。例如:

 
function myFunction(a: string, b: number) {}
type Params = Parameters<typeof myFunction>;
// Params 为 [string, number]
 

它们的使用场景也略有不同,一个是用来处理类构造函数的参数类型,一个是处理普通函数的参数类型。

用途

面试 ConstructorParameters 工具类型的目的是考察应聘者对 TypeScript 类型系统的理解,尤其是对泛型和工具类型的熟悉程度。在实际生产环境中,ConstructorParameters 主要用于构造类型安全的工厂函数、依赖注入系统或高级的类型操作,能够帮助开发者更好地处理复杂的类型推断和编译时安全性检查。\n

相关问题

🦆
TypeScript 中的 infer 关键字有什么作用?

infer 是 TypeScript 中的一种用于在条件类型中进行类型推断的关键字。它通常与条件类型(extends)一起使用,用于在一个条件类型分支中提取并推断类型变量。例如:

 
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;
 

这里 infer R 表示推断出函数类型 T 的返回值类型,并将其绑定到 R。这种技术在复杂类型转换和类型推导中非常有用。

🦆
TypeScript 中的工具类型 Parameters 有什么作用?

Parameters 是 TypeScript 提供的一个工具类型,用于获取函数类型的参数类型组成的元组。举例来说:

 
function exampleFunction(x: number, y: string): void {}
type Params = Parameters<typeof exampleFunction>;
// Params 为 [number, string]
 

Parameters 工具类型在处理高阶函数、函数式编程或者需要动态获取参数类型的场景中非常有用。

🦆
如何在 TypeScript 中使用 ReturnType 工具类型?

ReturnType 是 TypeScript 中的一个工具类型,用于提取函数类型的返回值类型。它适用于所有函数类型,例如:

 
function getValue(): number {
  return 42;
}
type ResultType = ReturnType<typeof getValue>;
// ResultType 为 number
 

ReturnType 对于类型安全的 API 设计、自动生成类型定义等场景非常有帮助,特别是在大型项目中,可以通过它确保函数返回值类型的一致性。

🦆
TypeScript 中的 keyof 操作符有什么作用?

keyof 是 TypeScript 中的一个操作符,用于获取对象类型的所有键名的联合类型。例如:

 
type Person = {
  name: string;
  age: number;
};
type PersonKeys = keyof Person;
// PersonKeys 为 'name' | 'age'
 

keyof 操作符在泛型编程中非常有用,尤其是在需要动态处理对象属性的场景中,能够有效提升代码的灵活性与类型安全性。