MST

星途 面试题库

面试题:TypeScript中Readonly与其他类型修饰符的组合应用

在一个复杂的前端数据结构中,可能同时需要使用Readonly、Partial等类型修饰符,假设我们有一个包含用户信息及权限的对象类型,如何合理运用这些修饰符来保证数据的只读性和部分可更新性,请编写代码实现并解释。
48.2万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 定义用户信息及权限的基础类型
type UserInfo = {
  id: number;
  name: string;
  age: number;
  permissions: string[];
};

// 使用Readonly和Partial来创建新类型
// Readonly确保整个对象只读
// Partial使对象的所有属性变为可选,实现部分可更新性
type ReadonlyPartialUserInfo = Readonly<Partial<UserInfo>>;

// 创建一个符合ReadonlyPartialUserInfo类型的对象
const user: ReadonlyPartialUserInfo = {
  id: 1,
  name: 'John Doe'
  // 这里可以只提供部分属性,因为使用了Partial
  // 并且对象整体是只读的,因为使用了Readonly
};

// 尝试修改属性(这会导致编译错误,因为对象是只读的)
// user.id = 2; 

解释

  1. 首先定义了UserInfo类型,它包含用户的基本信息和权限数组。
  2. 然后通过ReadonlyPartial组合创建了ReadonlyPartialUserInfo类型。Readonly修饰符会让整个对象的属性变为只读,无法重新赋值。Partial修饰符会将UserInfo中的所有属性变为可选,这样在创建对象时可以只提供部分属性,实现部分可更新的概念(虽然对象创建后整体只读,但创建时可以灵活设置部分属性)。
  3. 最后创建了一个符合ReadonlyPartialUserInfo类型的user对象,并演示了尝试修改只读属性会导致编译错误。