考虑以下情况:
class TestClass {
val: number;
construction(val: number) {
this.val = val;
}
getAddedVal(num: number): number {
return this.val + num;
}
}
function testFun(obj:$ReadOnly<TestClass>) {
console.log(obj.val);
console.log(obj.getAddedVal(5));
}
这给出了一个错误
console.log(obj.getAddedVal(5));
^ Cannot call `obj.getAddedVal` because property `getAddedVal` is missing in `TestClass` [1]. [prop-missing]
大概是因为对象被标记readonly
并且流无法破译该函数是否会修改该对象。有没有办法描述“这个函数不会修改this
,它是不可变的”?