@@ -118,21 +118,21 @@ private providers = new Map<string, ContestTableProviderBase>();
118118
119119```typescript
120120addProvider(provider: ContestTableProviderBase): this {
121- const key = provider[' getProviderKey'] ();
121+ const key = provider. getProviderKey();
122122 this.providers.set(key, provider);
123123
124124 return this;
125125}
126126```
127127
128- **注**: `protected` メソッドへのアクセスのため、角括弧表記を使用
128+ **注**: `getProviderKey()` は public メソッドとして直接呼び出し可能
129129
130130#### addProviders() メソッド修正
131131
132132```typescript
133133addProviders(...providers: ContestTableProviderBase[]): this {
134134 providers.forEach((provider) => {
135- const key = provider[' getProviderKey'] ();
135+ const key = provider. getProviderKey();
136136 this.providers.set(key, provider);
137137 });
138138 return this;
@@ -237,9 +237,10 @@ pnpm format src/lib/utils/contest_table_provider.ts
237237
238238### 実装時の留意事項
239239
240- 1. **protected メソッドへのアクセス**
241- - `getProviderKey()` は protected なため、Group 内では `provider['getProviderKey']()` で呼び出す
242- - TypeScript の暗黙の型チェックを通すため、角括弧表記が必須
240+ 1. **Public メソッドアクセス**
241+ - `getProviderKey()` は public メソッドとして実装
242+ - TypeScript strict mode で保護されており、アクセス制御が厳密に実施される
243+ - Protected メソッドへのアクセスは角括弧表記 `provider['method']()` でも strict mode では禁止
243244
2442452. **後方互換性**
245246 - `getProvider(contestType)` で section 未指定時、複合キーなしで検索
@@ -302,10 +303,15 @@ pnpm format src/lib/utils/contest_table_provider.ts
302303### 実装パターン
303304
3043051. **ProviderKey 型の活用**: `type ProviderKey = \`${ContestType}\` | \`${ContestType}::${string}\`` でテンプレートリテラル型を定義し、メソッドの戻り値型として使用することで型安全性を向上
305- 2. **保護メソッドの外部アクセス **: Protected メソッドへの外部アクセスは角括弧表記 `provider['getProviderKey']()` で実装
306+ 2. **Public メソッドアクセス **: Protected メソッドは TypeScript strict mode では直接アクセス不可。メソッドの責務と呼び出し元に応じて public/protected を適切に選択
3063073. **複合キー設計**: 単純キー(ContestType)と複合キー(ContestType + section)の併存は後方互換性を損なわず拡張性を確保
3073084. **静的ファクトリメソッド**: `createProviderKey()` を static メソッドで共通化することで、キー生成ロジックの一元管理を実現
308309
310+ ### TypeScript Strict Mode
311+
312+ - **アクセス制御の厳密性**: Protected/private メンバーへのアクセスは角括弧表記でも strict mode では禁止
313+ - **推奨解決策**: public メソッドまたは公開 API として設計し、カプセル化を保ちながら必要な機能を公開
314+
309315### テスト戦略
310316
3113171. **複合キー検証**: 複数 section を持つ Provider の登録・取得を個別テストで検証
0 commit comments