我需要创建从现有的不可变对象类型中仅提取可变对象类型的类型:
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对此进行验证,如果返回了不可变的对象,则会引发错误。
该怎么做?
答案 0 :(得分:0)
只读属性仅是TS编译器的标志,JavaScript中不存在。
从本质上讲,这意味着只读属性和非只读属性在功能上是100%相等的,因此,应该没有任何方法可以验证使对象可变/不可变的过程。