lodash を用いたクローンの作成
ここでは loash ライブラリを利用してあるオブジェクトのクローンを作成する例を示します。
プロジェクトの準備と lodash のインストール
「Node.js 向けの TypeScript プロジェクト作成方法」を元にプロジェクトを作成します。
またプロジェクト内にソースコード index.ts を作成します。
次のコマンドで lodash をインストールします。
$ npm install --save lodash $ npm install --save @types/lodash
ディープコピーによるクローンの作成
ディープコピーによるクローンを作成するためには、lodash ライブラリの cloneDeep メソッドが使えます。
import * as _ from 'lodash';
const p1 = {
favoriteFoods: ['Chinese', 'Italian'],
name: 'Suzuki',
};
console.log('--- 1 ---');
const p2 = _.cloneDeep(p1);
console.log(p1);
console.log(p2);
console.log('--- 2 ---');
p2.name = 'Yamada';
console.log(p1);
console.log(p2);
console.log('--- 3 ---');
p2.favoriteFoods[1] = 'Ramen';
console.log(p1);
console.log(p2);
このコードを次のコマンドでビルドします。
$ npm run build
ビルドが成功すると dist フォルダに index.js が作成されます。
index.js を実行するには次のようにします。
$ node ./dist/index.js
この実行結果は次のようになりました。
--- 1 --- { favoriteFoods: [ 'Chinese', 'Italian' ], name: 'Suzuki' } { favoriteFoods: [ 'Chinese', 'Italian' ], name: 'Suzuki' } --- 2 --- { favoriteFoods: [ 'Chinese', 'Italian' ], name: 'Suzuki' } { favoriteFoods: [ 'Chinese', 'Italian' ], name: 'Yamada' } --- 3 --- { favoriteFoods: [ 'Chinese', 'Italian' ], name: 'Suzuki' } { favoriteFoods: [ 'Chinese', 'Ramen' ], name: 'Yamada' }
この結果、確かにコピーした先の p2 への変更は、 元のオブジェクト p1 に全く影響していないことがわかります。