Skip to content

不可变类型

Code

ts
interface Immutable {
  a: number;
  b: string;
}
const im: Immutable = {
  a: 1,
  b: '2',
}

解析

ts
type DeepReadonly<T> = {
  readonly [P in keyof T]: T[P] extends object ? DeepReadonly<T[P]> : T[P];
}
interface Immutable {
  a: number;
  b: string;
   c: {
    d: boolean;
  }
}
// 官方, 只是浅
const im: Readonly<Immutable> = {
  a: 1,
  b: '2',
  c: {
    d: true
  }
}

const im2: DeepReadonly<Immutable> = {
  a: 1,
  b: '2',
  c: {
    d: true
  }
}