1

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

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. 打字稿不检查它是否重新返回可变或不可变对象,我需要强制 TS 验证这一点,如果返回不可变则抛出错误。

这个怎么做?

4

1 回答 1

0

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

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

于 2019-06-19T11:58:48.803 回答