Open12
reactとtypescriptでtodoアプリを作るメモ

この動画やってみよう

公式にcreate-react-appが載っていない
これは…?

create-react-appはメンテナがいなくて更新止まったのか…
Viteでいくぞ
Vite にはNode.jsバージョン 18 以降が必要です。
node --version
v18.12.1
npm create vite@latest RTtodo -- --template react-ts
✔ Package name: … rttodo
Scaffolding project in /Users/minmeg/workspace/RT-todo/RTtodo...
Done. Now run:
cd RTtodo
npm install
npm run dev

Viteさんの指示に従ってみる
npm install
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@typescript-eslint/eslint-plugin@7.3.1',
npm WARN EBADENGINE required: { node: '^18.18.0 || >=20.0.0' },
npm WARN EBADENGINE current: { node: 'v18.12.1', npm: '8.19.2' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@typescript-eslint/parser@7.3.1',
npm WARN EBADENGINE required: { node: '^18.18.0 || >=20.0.0' },
npm WARN EBADENGINE current: { node: 'v18.12.1', npm: '8.19.2' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@typescript-eslint/scope-manager@7.3.1',
npm WARN EBADENGINE required: { node: '^18.18.0 || >=20.0.0' },
npm WARN EBADENGINE current: { node: 'v18.12.1', npm: '8.19.2' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@typescript-eslint/type-utils@7.3.1',
npm WARN EBADENGINE required: { node: '^18.18.0 || >=20.0.0' },
npm WARN EBADENGINE current: { node: 'v18.12.1', npm: '8.19.2' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@typescript-eslint/utils@7.3.1',
npm WARN EBADENGINE required: { node: '^18.18.0 || >=20.0.0' },
npm WARN EBADENGINE current: { node: 'v18.12.1', npm: '8.19.2' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@typescript-eslint/visitor-keys@7.3.1',
npm WARN EBADENGINE required: { node: '^18.18.0 || >=20.0.0' },
npm WARN EBADENGINE current: { node: 'v18.12.1', npm: '8.19.2' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@typescript-eslint/types@7.3.1',
npm WARN EBADENGINE required: { node: '^18.18.0 || >=20.0.0' },
npm WARN EBADENGINE current: { node: 'v18.12.1', npm: '8.19.2' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@typescript-eslint/typescript-estree@7.3.1',
npm WARN EBADENGINE required: { node: '^18.18.0 || >=20.0.0' },
npm WARN EBADENGINE current: { node: 'v18.12.1', npm: '8.19.2' }
npm WARN EBADENGINE }
いっぱい怒られている
nodeのバージョンを上げんといかんそう

バージョン管理ツールって結局何が正解なんだろうね…?
nとかnvmとか?
asdfとかaquaとか?
いったん普通にupdateしちゃおう
node -v
v20.11.1
普通に行けたや、再チャレンジ

npm install
up to date, audited 220 packages in 913ms
41 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
すっといけた&npm run devも動いたぞ

頻出するtypescriptの型説明のDoc、内容がまとまっててとてもいいな〜
TypeScriptのinterfaceとtypeの違い
型エイリアスの方が拡張性が少なそうで安全に倒せそうなので、悩んだら型エイリアスで良さそうだなReact.StrictModeについて。地味にこの辺はあんまり知らなかったな
この辺りは自分でメモしよう

constとfunctionどっちで定義するのがいいのか
→巻き上げが必要がどうかで決める
ただ可読性考えると巻き上げすると混乱するから、基本constでいい気がする

react-beautiful-dndが動画では出ているけど、Node20で動くかわからないなあ
dnd-kitっていうやつ使ってみようかな

react-dndっていうのはまた今度かなあ

シンプルなのはtrue, falseの2軸でいける