実現したいこと
Aクラスを継承するBクラスがあり、protected _params という同じ名前の内容の違うオブジェクトを持っています。Bでそのオブジェクトをオーバーライドし、型アサーションをしたのですが、Bの _paramsの型がAParamsから変更できません。
該当のソースコード
typescript
1type AParams = { 2 name: string, 3 age: number, 4 fuga: string; 5}; 6 7class A { 8 protected _params: AParams = { 9 name: "A", 10 age: 12, 11 fuga: 'AA' 12 }; 13} 14 15type BParams = AParams & { 16 name: string, 17 age: number, 18 hoge: number; 19}; 20 21class B extends A { 22 constructor() { 23 super(); 24 25 this._params = { 26 ...this._params, 27 name: "B", 28 age: 12, 29 hoge: 1 30 } as BParams; 31 } 32}
エラーメッセージ
クラスBの this._params は、AParams のままです。(vscode, typescript 5.2.2)
試したこと
PT3.5の提案も以下のものを試しましたがだめでした。
typescript
1//1. 2(this._params as BParams) = { 3...this._params, 4name: "B", 5age: 12, 6hoge: 1 7} 8 9//2. 10this._params = { 11...this._params, 12name: "B", 13age: 12, 14hoge: 1 15} as Bparams 16 17//3. 18this._params = { 19super["_params"], 20name: "B", 21age: 12, 22hoge: 1 23}
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー