指数配列が空ではない時、最後の要素を返す。 配列が空の場合、
- 2引数目は
{ mustThrowErrorIfArrayIsEmpty: true }
で指定された場合、UnexpectedEventError
例外が投げられる。 但し、もし関数エラーが発生せずに実行出来たら、配列要素の型が非undefined
且つ非null
で指定され(明示的か暗黙的)、返値もundefined
又はnull
に成っていないと、TypeScriptが信用してくれる。 - 2引数目が指定されていない場合、
null
が返される。TypeScript
が厳密に設定している場合、配列の要素 を使う前に、非null確認がさせられる。
此の関数はtargetArray[targetArray.length - 1]
の様な
表現を代用するだけでなく、配列の最後の
要素が存在していると保証する。
例
const sample: Array<string> = [ "alpha", "bravo", "charlie" ];
const lastElementOfSample: string | null = getLastElementOfArray(sample);
lastElementOfSample
は"charlie"
値に成る。
上記のコードサンプルの場合、sample
配列の全要素
の値を事前に分かっているが、実践の場合には事前に知らない事が多いので、返される値がnull
に成っている(詰まり配列が空に成っている可能性が有る)前提。
console.log(lastElementOfSample.length);
TypeScriptがエラーTS18047
(「'lastElementOfSample' is possibly 'null'」)を投げる場合。
原因はlength
プロパティは文字列
(と配列)には存在しているが、lastElementOfSample
は
null
に成っている可能性が有る。
length
を含めて文字列のプロパティや
メソッドを呼び出す前に、lastElementOfSample
は
非null
と保証しなくてはならない。
一つの方法はif (lastElementOfSample !== null) {/* ... */}
の様に
条件文を使う方法である、此の場合条件文内の値は非
null
であるとTypeScriptが信じてくれる。
他の解決方法も有るが、lastElementOfSample!.length
はコードの品質が大きく低下する為、
TypeScriptが出来ると発言するエンジニアは絶対に使用してはいけない表現である。
此の様な機能を使用するエンジニアはTypeScriptを利用する有意義さを無くす
有害機能であるany
型も幅広く用いている事が多い。
const notNullLastElementOfSample: string = getLastElementOfArray(sample, { mustThrowErrorIfArrayIsEmpty: true });
notNullLastElementOfSample
の型を
string | null
ではなく、string
が指定出来る。
配列が空の時、null
が返されずに
UnexpectedEventError
が投げられるからである。
無論、此の例外をtry/catch
で処理出来るが、此の場合だと、
非null確認に比べ利点は特に無い。
「IntelliJ IDEA」ファミリー統合開発環境に於ける高速入力
「IntelliJ IDEA」ファミリー の統合開発環境のLive templates 機能利用の恩恵に依り、関数呼び出し表現等の入力速度が向上する。 YDEEのライブテンプレートを取得するには、当ライブラリの正式プラグイン を導入する必要が有る。
Live Templateの利用手順
ライブテンプレートを使った事が無い場合でも、充実した内容の手順書が下記にある為、心配は無用である。 ライブテンプレートに慣れてしまえば、(キーボードのショートカット利用と同じ様な習慣)僅か数秒程度で下記の操作を行える。
- 対象配列を保持している変数か、配列自体をクリップボードにコピーする。 此の行動を、getLastElementOfArrayのライブテンプレートを呼び出す前に実行する習慣を身に 付けたなら、開発環境は自動的に1引数目を必要な表現で埋められる様に成る。
- addElementsToArrayと言う関数の名前入力を開始する。
下記のオートコンプリートの選択肢が表示される。
- 重なっている異色の3個の円板は単に関数名のオートコンプリートで、結合開発環境の既定の機能である。 Enterを押すと、関数の名前が入力され、必要に応じてインポート宣言 も追加される。 悪くはないが、更成る自動化が可能である。
- 印鑑アイコンは望ましい項目。 Enterを押すと、コードの原型が自動入力され、1引数目は自動的に 埋められた上で選択される。 上記の手順通り操作を行った場合、自動入力された1引数目を変える必要は無いので、 もう一度Enterを押して下さい。
- 不要なコードを削除する。
gleoa
と言うgetLastElementOfArray
の各言葉の
最初の文字から成り立っている当ライブテンプレートのアリアスを使っても良いが、何度も使用しないと覚えられない点が短所である。