function fo(args: {x: number,y: string}): void{
const {x,y} = args;
x = 2; // Cannot assign to 'x' because it is a constant.ts(2588)
}
function fa(...args: [x: number,y: string]): void{
const [x,y] = args;
x = 2; // Cannot assign to 'x' because it is a constant.ts(2588)
}
4条答案
按热度按时间ghg1uchk1#
现在没有办法这样做,也可能没有,因为在
ES6
中也不可能:How to make function parameter constant in JavaScript?
无论如何,此解决方法不适用于TypeScript。
wj8zmpe12#
目前尚不支持该功能,但您可以投票反对此功能请求,并在将来跟踪它以获取任何更新:https://github.com/microsoft/TypeScript/issues/18497
与此同时,最好的办法是使用linter规则使参数默认为const,比如ESLint's no-param-reassign rule,在极少数情况下,如果需要参数为 not const,可以在每次重新分配时使用
eslint-disable-line
,或者将整个函数 Package 在eslint-disable
/eslint-enable
对中,使其 * 所有 * 参数都为非const。6psbrbz93#
Typescript还不支持在函数参数中使用
const
,但是可以使用readonly
参数。Typescript 3.4增加了对
readonly
数组和元组(还不是对象)的支持。示例:
或
或
ffx8fchx4#
一个包含一些额外字符的简短变通方法接近实现:
但是你仍然可以用
args.x=2
覆盖。