logoProsperBao

Mutable

2022-04-13 07

题目来源(type-challenges)

问题

实现一个通用的 Mutable<T> 类型,其中 T 可以是任意类型(不是只读)。

interface Todo {
  readonly title: string
  readonly description: string
  readonly completed: boolean
}

type MutableTodo = Mutable<Todo> // { title: string; description: string; completed: boolean; }

解答

type Mutable<T> = { -readonly [K in keyof T]: T[K] }

拆分

  1. 可以通过 +/- 移除添加修饰符
  2. 可以通过 -readonly 移除 readonly