先日の続きで、Astroテーマに既存のコンテンツを読み込ませようとしたときに遭遇したことをメモします。
- VSCodeには複数フォルダをルートにできるワークスペース機能がある
- ルートフォルダをそれぞれ個別に開いたときのように動いてくれるはず
- nullableな型はoptional chainingでアクセスする
- nullでないなら通常通り処理し、そうでないなら処理せずに
undefinedが返る - プロパティ(
obj?.prop)、インデックスアクセス(obj?.[key])、関数呼び出し(fn?.(args))で使える
- nullでないなら通常通り処理し、そうでないなら処理せずに
- PrettierのMarkdownフォーマッタが英語と日本語の間に空白を挿入するので、使わないようにする
- v3で修正されたらしいけど、よくわからない
TypeScriptコンパイルオプション#
strict- 以下を有効化する:
alwaysStrict:ECMAScriptのstrictモードを強制するstrictNullChecks:nullableな型を厳密に扱うstrictBindCallApply:call、bind、applyの呼び出しに型チェックが入るstrictBuiltinIteratorReturn:“ビルトイン・イテレータは、anyではなくundefinedのTReturn型でインスタンス化される”strictFunctionTypes:関数の型を厳密にチェックするstrictPropertyInitialization:クラスがnullableでないプロパティを初期化しないまま構築されないようにするnoImplicitAny:引数の型の未指定を禁止するnoImplicitThis:thisの型の未指定を禁止するuseUnknownInCatchVariables:catchの引数がunknown型になる
- 以下を有効化する:
exactOptionalPropertyTypes- 既定で、オプショナルなプロパティに
undefinedを代入できないようにする- オプショナルはそのプロパティが定義されないことを許容するという意味で、
undefinedを代入可能という意味ではない、らしい
- オプショナルはそのプロパティが定義されないことを許容するという意味で、
- 既定で、オプショナルなプロパティに
noFallthroughCasesInSwitch- switch文におけるフォールスルーを禁止する
noImplicitOverride- オーバーライドするメソッドに必ず
overrideを書くよう強制する
- オーバーライドするメソッドに必ず
noImplicitReturnsreturnのないコードパスを禁止する
noPropertyAccessFromIndexSignature- 定義されていないプロパティへ
.でアクセスすることを禁止する - biomeの
useLiteralKeysルールと衝突するので、どちらかをオフにすること
- 定義されていないプロパティへ
noUncheckedIndexedAccess- インデックスでアクセスした値をnullable型として扱う
- 範囲外アクセスをチェックさせるため
noUnusedLocals、noUnusedParameters- 変数の未使用をエラーにする
resolveJsonModule- JSONファイルをimportできるようにする
forceConsistentCasingInFileNames- ファイルパスをケース・センシティブに扱うことを強制する
おまけ:Obsidianにおける日本語環境の改善#
- Obsidian標準の単語区切りは日本語を認識していない
- 空白や句読点は認識してくれるが、かなや漢字は無視される
- Word Splitting for Simplified Chinese in Edit Mode and Vim Modeプラグインは中国語用だけど日本語でも使えるみたい
- デフォルト設定のままでも問題なく機能している