我正在学习TypeScript
,并且对它处理const
变量的方式感到有些困惑。假设我为数字定义接口为:
interface MyNumber {
value: number;
}
并创建了一个常量MyNumber
const myNumber: MyNumber = { value: 42 };
我在TypeScript documentation中读到const
不会阻止我修改对象的内部状态(前提是该属性不是readonly
)。但是,我没想到会编译它:
function setToFive(num: MyNumber) {
num = {
value: 5
}
}
console.log(myNumber);
setToFive(myNumber);
console.log(myNumber);
此代码打印两次42
。看起来该函数执行const
变量的副本并在其范围内使用该副本。我觉得这有点令人惊讶。有没有办法触发compile-time
错误?
您正在将功能参数和重新分配给新对象。您不能将const放在函数参数中。
您正在寻找的是eslint或类似内容。在您的项目上强制采用最佳原则的工具。
您要寻找的规则是no param reassign。