#質問内容
interfaceの使い方がよくわからない
#やりたいこと
export default class Scene1 { new Load(Sound.bgm); } export default class Load { constructor(bgm: Note) { new Scene2(bgm); } } export default class Scene2 { constructor(bgm: Note) { Scene2Manager.appendBoard(bgm); } } export default class Scene2Manager { private static boolNote: number[][] = []; public static appendBoard(bgm: Note) { this.controlGame(bgm); } private static controlGame(bgm: Note) { this.boolNote = bgm.note; } }
非常に長いコードですので関係のあるところのみ抜粋しました。
上のようにbgmを引っ張ってきてbgmに紐づけしたnoteをthis.boolNoteに入れたいです。
#コード
sound
1import PIXI_SOUND from 'pixi-sound'; 2import Note from './note'; 3 4export default class Sound { 5 public static bgm: Note = PIXI_SOUND.Sound.from({ //error 6 url: 'sounds/bgm.mp3', 7 volume: 0.3, 8 preload: true 9 }); 10}
note
1import PIXI_SOUND from 'pixi-sound'; 2import Sound from './sound'; 3 4export default interface Note extends PIXI_SOUND.Sound { 5 note: number[][]; 6} 7Sound.bgm.note = [[3, 0], [6, 1], [9, 2]]; //このように宣言したい
error
1プロパティ 'note' は型 'Sound' にありませんが、型 'Note' では必須です。
#やったこと
sound
1import PIXI_SOUND from 'pixi-sound'; 2import Note from './note'; 3 4export default class Sound { 5 public static bgm: Note = { 6 url: 'sounds/bgm.mp3', 7 volume: 0.3, 8 preload: true, 9 note: [[3, 0], [6, 1], [9, 2]] 10 }; 11//このようにするとPIXI_SOUND.Soundの中身を全て宣言しなくてはならなくなる 12}
「任意の変数」はどういった形で使われるのでしょうか?
継承して、プロパティを追加する、ではダメなんでしょうか?
初学者なものでプロパティを追加できることを知りませんでした。プロパティを追加することで自分の実現したいことができると思います。内容を書き換えますので回答していただけると幸いです
内容ガラッと変わっているし、よくわからないのですが・・・。
なんてエラーでているんですか?
エラー文の提示をお願いします。
プロパティはinterface以外でも追加できるのでしょうか?自分で調べた結果interfaceを使っています。
(これは回答のつもりではないのでこちらに書きますが)
単純にPIXI_SOUND.Sound.fromの返却値がPIXI.sound.Sound型で、Note型じゃないから起こっているのでは?
質問の意図を確認しますが、Note型にSoundを入れたいのではなく、noteというプロパティをSound型に追加したいという意味ですか?
noteをSound型にいれるとSound.noteとしかできないと自分は思っているんですがSound.bgm.noteとできるのでしょうか?
失礼、Sound.bgmいかにnoteですね
Sound:{
bgm:{
note: number:[][]
}
}
になればいいですか?
そうですね、そうできればうれしいです
回答2件
あなたの回答
tips
プレビュー