値渡しと参照渡しの話
TypeScript
- 再代入したら参照は切れる
- メンバを変更するぶんには参照渡しのまま
- string は再代入以外に変更する手がないので(?)、値渡し
用語とか考え方が合ってるかわからないので、 とりあえず例を載せておく
ts
function func01(s: string): void {
s = "modified"; // この使い方は TSLint で `shadowed-variable` として怒ってくれる
assert.equal(s, "modified");
}
const s = "not modified";
func01(s);
assert.equal(s, "not modified");
// メンバを変更
function func02(arr: string[]): void {
arr[0] = "modified";
}
const arr = ["a", "b", "c"];
func02(arr);
assert.deepEqual(arr, ["modified", "b", "c"]); // !!!
// 再代入
function func03(arr: string[]): void {
arr = ["modified", "modified", "modified"]; // この使い方は TSLint で `shadowed-variable` として怒ってくれる
}
const arr2 = ["a", "b", "c"];
func03(arr2);
assert.deepEqual(arr2, ["a", "b", "c"]); // !!!