Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
そのコレクション合ってる?
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
akatsuki1910
September 19, 2023
0
35
そのコレクション合ってる?
akatsuki1910
September 19, 2023
Tweet
Share
More Decks by akatsuki1910
See All by akatsuki1910
機械の気持ちを考えてコードを書こう
akatsuki1910
0
9
サーバーを使って遊ぼう
akatsuki1910
0
16
お前、GCってまあ別に気にしなくていいだろって思いながらwebサイト作ってるだろ
akatsuki1910
0
13
業務を効率化させるためのAIツール3選(超実践編)
akatsuki1910
0
39
後輩に伝えたいこと
akatsuki1910
0
24
難解(かもしれない)言語
akatsuki1910
1
43
Reactのチュートリアルをしよう3
akatsuki1910
0
34
クソドメインを取ろう
akatsuki1910
0
64
Reactのチュートリアルをしよう2
akatsuki1910
0
29
Featured
See All Featured
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.2k
The SEO Collaboration Effect
kristinabergwall1
0
410
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
140
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Cost Of JavaScript in 2023
addyosmani
55
9.8k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
160
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
850
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
410
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
860
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Transcript
そのコレクション合ってる? らり
コレクションとは コレクションとは、値をまとめて管理するオブジェクトのことである なんとなくで作り、なんとなくで保管する箱ではありません コードの読みやすさや、保守のしやすさにも繋がります
配列の基礎の形 「[]」を使うか、Arrayコンストラクタを作る
readonly 型を宣言する際にreadonlyをつけることにより、破壊的変更が出来ない配列を作ること が出来る
readonly ただ、多次元配列を用意する際は、各配列の宣言時にreadonlyをつける必要がある
as const わざわざreadonlyを付けるのはめんどくさいため、as constというものをつける これにより、ネストがあるものでも全てreadonlyがついた状態と同じにできる
as const 型をつける時は、「satisfies」をつける そのまま型注釈を付けちゃうと、as constが抜ける
Setを使う 重複した値を使わない時、Setを使うと明示的 例として、何か重複無しの値を宣言するとなった際、宣言ミスを防げる
Setを使う もちろんreadonlyは存在する ただ、専用の型がある
Setの注意点 「順番」は存在するけど、「順序」は存在しないため、インデックスでアクセスできない (forEachで回すと入れた順に値が出てくる) sortやfilterがないため、毎度配列に直す必要がある そのため、配列操作を沢山行うのであれば、使い方が間違っているか、Setを使うべきで はない場合である
余談 配列のindexは文字列でもアクセス出来る場面がある typescriptではindexが数値でないとエラーを出してくれるが、以下のように出してくれな い時がある これは、元々JSが配列のindexを内部的に文字列にするため、問題ないためである https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array
余談 そのため、for inのようにkeyが文字列で返ってくるものでも受け付ける 以下の例だと、変数iはstring型である
余談2 for inは「キーが文字列であるオブジェクトの列挙可能プロパティすべてに対して、継承さ れた列挙可能プロパティも含めて反復処理を行います」とある通り、indexを0から順に 調べて出力してくれる訳ではない そのため、以下のような結果が返る場面があるため、使うのは控えた方がよい
前提知識 : 連想配列 自動的に割り当てられる数字をキーとして持つかわりに、自由に任意の文字列を割り振 ることができる配列 連想リストや辞書などとも呼ばれる 他言語ではListやHashMapという名前で使われている
オブジェクトの基礎の形 「{}」で宣言する キーとバリューが対になったもの(プロパティ)の集合である プロパティへは、ドット記法とブラケット記法の2パターンのアクセス方法がある
readonly readonlyは存在する ただ、ネストが下がると効かなくなるため、全てにかけたい場合はas constを使う
Mapを使う 実は連想配列はオブジェクトで作るべきではなく、Mapを使った方がいい時が多い というのも、オブジェクトは連想配列を作るためにあるものではないからである https://qiita.com/raccy/items/816a322fb330193e788b
Mapを使う また、オブジェクトは連想配列を扱うためとしてはあまり最適化されているわけではない オブジェクトインジェクション攻撃や既定キーがあったりと、オブジェクトの作り方や使い 方をきちんと把握してないと危険な場面があるため、考えることが多い それに比べ、Mapでは上記のような問題はほぼ考えなくてよい https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map
Mapを使う もちろんreadonlyは存在する ただ、専用の型がある
Mapの注意点 keyがプリミティブ型じゃないと色々とややこしい なので、ちゃんと型をつけることで解決する
Mapの注意点 最初の初期値の用意の仕方がjson形式ではないため、直観的でない そのため、可読性を求めるために、json形式で用意したデータをMapに変えてから使う という方法がある
総括 初期宣言して、その後中の値が変更されてほしくないのであれば、readonlyをつける 重複した値を使用しない、配列操作をしないのであれば、Setを用いるという選択肢があ る 連想配列にはオブジェクトを使っても良いが、Mapを使った方が得られる恩恵が大きい
課題 課題1 翻訳用オブジェクトを使用しやすい形にしてください 欲しいものは、翻訳用オブジェクトと、そのkeyの型です 課題2 タイトルのテキストが入った配列を使用しやすい形にしてください 欲しいものは、タイトルのテキストが入った配列と、そのタイトルのunionの型です