【发布时间】:2018-04-24 13:36:03
【问题描述】:
我想要一个返回数组的函数,但我希望返回的数组是只读的,所以当我尝试更改其内容时应该会收到警告/错误。
function getList(): readonly number[] {
return [1,2,3];
}
const list = getList();
list[2] = 5; // This should result in a compile error, the returned list should never be changed
这可以在 TypeScript 中实现吗?
【问题讨论】:
-
使用
Readonly<number[]>存在一个问题。我不能再使用for...of,说该类型必须有一个返回迭代器的方法。 -
...它doesn't seem to work。我肯定会在那里出错吗?
-
我不认为这完全是重复的。据我所知,接受的答案甚至在其他问题中都不起作用。
-
@series0ne:是的,见上文。我去尝试了,所以我可以评论一个例子(我喜欢用傻瓜来做),然后......它没有用。 :-)
-
在纯 JS 中,您可以使用
a => Object.freeze(a);将a数组转换为浅不可变数组。尝试更改或删除它的项目似乎会在严格模式下抛出“类型错误”,但否则会失败。如果其中任何一项是引用类型,那么它将保持可变,除非您将它们冻结,即递归。
标签: javascript typescript immutability readonly