# 値渡しと参照渡しの話

# TypeScript

  • 再代入したら参照は切れる
  • メンバを変更するぶんには参照渡しのまま
  • string は再代入以外に変更する手がないので(?)、値渡し

用語とか考え方が合ってるかわからないので、
とりあえず例を載せておく

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"]); // !!!

[ 📩 ご意見 ]