如何从不可变对象类型中提取可变对象类型

时间:2019-06-19 10:59:45

标签: typescript seamless-immutable

我需要创建从现有的不可变对象类型中仅提取可变对象类型的类型:

import * as Immutable from 'seamless-immutable'

interface IObjType {
  field: string;
}
type TObjImmType = Immutable.Immutable<IObjType>;

const obj: IObjType = { field: 'val' };
const objImm: TObjImmType = Immutable(obj);

// dummy function to show what I need to do
const getMutable = (immObj: TObjImmType): IObjType => immObj.asMutable();

const result = getMutable(objImm);

所以问题出在getMutable上。 Typescript不会检查它是否会再次返回可变或不可变的对象,因此我需要强制TS对此进行验证,如果返回了不可变的对象,则会引发错误。

该怎么做?

1 个答案:

答案 0 :(得分:0)

只读属性仅是TS编译器的标志,JavaScript中不存在。

从本质上讲,这意味着只读属性和非只读属性在功能上是100%相等的,因此,应该没有任何方法可以验证使对象可变/不可变的过程。