首页 > 解决方案 > 不可变函数参数打字稿

问题描述

有没有办法在函数参数的打字稿中获得不变性?(与 java 和 final 相同)

例子:

function add(a: number, b: number): number {
    a = 5; // possible
    return a + b;
}

而我正在寻找的,例如:

function add(a: ???, b: ???): number {
    a = 5; // not possible because it would be immutable
    return a + b;
}

如果一个函数可以修改我的参数,我正在搜索这个是因为清楚。

标签: typescript

解决方案


这有点hacky,但你可以像这样执行它

function add(...params: readonly [a: number, b: number]): number {
  const [a, b] = params;
  a = 5;
//^^^^^
//Cannot assign to 'a' because it is a constant.

  return a + b;
}

a现在bconst蚂蚁,因此是不可变的。

但是请注意,paramsreadonly只会阻止您执行诸如推送或拼接元组数组之类的操作。它不会阻止您完全重新分配数组


推荐阅读