📚
TypeScriptのバッドノウハウ的なtips(ハマったところのまとめ)
Abstract
TypeScriptの型って、TypeScript + React-Three-Fiberだとものすごいハマりポイント.
他にも、簡単な話なのに、なかなか検索で出てこないとか。
なので、苦しんだポイントを適宜追加していきます。
苦しんだポイント
1.型が分からん
VSCode使いなら、型を知りたい変数の上にマウスオーバすれば、結構分かる。

こんな感じ。
2."..."が分からん
スプレッド構文というらしい。{...props}とかの形でよく見るけど、検索で出てこない。
【JavaScript】「…」って何者?スプレッド構文について初心者向けに解説!がものすごい分かりやすかった。
ホント感動!!
3."{ xxx }"が分からん
分割代入というらしい。相変わらず検索性の悪いTypeScriptの構文だ。
【TypeScript】分割代入でのみんな知るべき使い方7選が分かりやすかった。
const student = {
name: "山田太郎",
age: 20,
department: "経済学部",
};
const { name, age } = student; ## ← 欲しいメンバだけ取り出す使い方になる
console.log(name); // 山田太郎
console.log(age); // 20
ついでに。変数名を別名にする方法
const { name: studentName } = student;
console.log(studentName); // 山田太郎
さらに。関数の引数として使う方法
// ↓ address欲しくないとかなった時の定義
function showProfile({name, age}: {name: string, age: number}) {
console.log(`名前: ${name}, 年齢: ${age}`);
}
const user = {
name: "田中太郎",
age: 25,
address: "東京都新宿区"
};
// ↓ 渡す方は気にせず渡せる。
showProfile(user);
4.[]で、配列に追加できる。
※配列の基本的な使い方は、いろんなサイトにお任せ。
push()で追加できるけど、[]でも追加できる。
お試しコード
const aaa: number[] = []
console.log('001 aaa.length=', aaa.length)
for(let i = 0; i < 3; i++)
aaa[i] = 20 + i ### ← ここで追加している。Out of Indexにはならない。
console.log(aaa)
console.log('002 aaa.length=', aaa.length)
Playground結果
[LOG]: "001 aaa.length=", 0
[LOG]: [20, 21, 22]
[LOG]: "002 aaa.length=", 3
コードリーディングしてて、"ここじゃないよね。Out of indexやもんね。"ってもやもやしてたら、問題ないコードだったという。
5.[]で、連想配列にも追加できる。
※連想配列の基本的な使い方は、いろんなサイトにお任せ。
連想配列の場合は、[]で追加するのがデフォルトらしい。
お試しコード
type strkeymap = { [key: string]: boolean }
const getKeyboard = () => {
const kemap: strkeymap = {}
kemap['KeyA'] = true ### ← ここで追加している。Out of Indexにはならない。
return kemap
}
const keyboard = getKeyboard()
console.log('keyboard["KeyA"]=', keyboard['KeyA'])
console.log('keyboard["KeyB"]=', keyboard['KeyB'])
console.log('keyboard["KeyC"]=', keyboard['KeyC'])
Playground結果
[LOG]: "keyboard["KeyA"]=", true
[LOG]: "keyboard["KeyB"]=", undefined
[LOG]: "keyboard["KeyC"]=", undefined
TypeScriptは、[]の扱いは、追加もできるという考え方っぽい。
Discussion