TypeScriptでGenericsな配列を扱う関数を試してみた。
引数の型がT
の例は多くあるけどArray<T>
は無かったのでメモしておく。
Genericsな配列を扱う関数
重複を除いたユニークなリストを返す関数を考えてみる。
/**
* 重複を除いたユニークなリストを返す
* @param Array<T> src
* @return Array<T> 要素がユニークなリスト
*/
function uniqueList<T>(src: Array<T>): Array<T> {
return src.filter(function (elem, index, self) {
return self.indexOf(elem) === index
})
}
関数名のあとにジェネリクス<T>
を定義して、あとは引数と返り値の型でArray<T>
と利用することができる。
実行するとstring型とnumber型もunionでも利用できた。
const chars = ['A', 'B', 'A', 'B', 'C', 'A']
const numbers = [0, 1, 2, 2, 1, 3, 1]
const unions: Array<number|string> = [1, 2, 2, 'A', 'A', 'B']
console.log(uniqueList(chars))
// ['A', 'B', 'C']
console.log(uniqueList(numbers))
// [0, 1, 2, 3]
console.log(uniqueList(unions))
// [1, 2, 'A', 'B']
Reactに入門するよ
ReactTypeScriptschedule2021-12-12
【TypeScript】ジェネリックスな配列Array<T>を扱う関数を定義する
TypeScriptschedule2021-10-10
【TypeScript】Jestでdescribeなどの関数がnot findになってるのを解消する
TypeScriptテストエラー解消schedule2021-10-10
【TypeScript】JestでインポートしたモジュールがCannot find moduleとなるエラー
TypeScriptテストエラー解消schedule2021-10-10
【Electron】PCのスリープと起動イベントを検知する
ElectronNodejsJavaScriptTypeScriptschedule2021-09-06
Electronでアプリの2重起動を防ぐためのコード
ElectronTypeScriptschedule2021-08-25
個人の技術ブログを作り直しました(3回目)
ブログNuxtjsVuejsTypeScriptJavaScriptNetlifyschedule2020-12-19
nuxt/contentでサイトマップを作る
NuxtjsVuejsTypeScriptJavaScriptschedule2020-12-16
remarkでnuxt/contentのマークダウン書式を拡張する
NuxtjsVuejsTypeScriptJavaScriptschedule2020-12-13
nuxt/contentでブログを作る
NuxtjsVuejsTypeScriptJavaScriptschedule2020-12-12