質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

2回答

801閲覧

TypeScript 親classに追加

jasmine-jp

総合スコア15

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

1クリップ

投稿2020/09/12 06:04

編集2020/09/26 00:37

#質問内容
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}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/09/12 06:24

「任意の変数」はどういった形で使われるのでしょうか?
miyabi_takatsuk

2020/09/12 07:27

継承して、プロパティを追加する、ではダメなんでしょうか?
jasmine-jp

2020/09/12 10:47

初学者なものでプロパティを追加できることを知りませんでした。プロパティを追加することで自分の実現したいことができると思います。内容を書き換えますので回答していただけると幸いです
miyabi_takatsuk

2020/09/12 12:59

内容ガラッと変わっているし、よくわからないのですが・・・。 なんてエラーでているんですか? エラー文の提示をお願いします。
jasmine-jp

2020/09/12 13:22

プロパティはinterface以外でも追加できるのでしょうか?自分で調べた結果interfaceを使っています。
Hogeike

2020/09/14 04:39 編集

(これは回答のつもりではないのでこちらに書きますが) 単純にPIXI_SOUND.Sound.fromの返却値がPIXI.sound.Sound型で、Note型じゃないから起こっているのでは? 質問の意図を確認しますが、Note型にSoundを入れたいのではなく、noteというプロパティをSound型に追加したいという意味ですか?
jasmine-jp

2020/09/14 12:37

noteをSound型にいれるとSound.noteとしかできないと自分は思っているんですがSound.bgm.noteとできるのでしょうか?
Hogeike

2020/09/15 00:12

失礼、Sound.bgmいかにnoteですね Sound:{ bgm:{ note: number:[][] } } になればいいですか?
jasmine-jp

2020/09/15 01:15

そうですね、そうできればうれしいです
guest

回答2

0

自己解決

できなかったので別のやり方にしました

投稿2020/12/27 08:18

jasmine-jp

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

まだ何のためにそれをしたいのかはわかりませんが、表題通りのことをやるのであればbgmを必須ではなくすことで型は解決できます。

typescript

1export default interface Note extends PIXI_SOUND.Sound { 2 note?: number[][]; 3}

diff

1- note: number[][]; 2+ note?: number[][];

これをやったところで、bgmの中身はPIXI_SOUND.Sound型の各種パラメータとnote:undefinedが入るだけですがそれでも良ければ。

投稿2020/09/15 04:41

Hogeike

総合スコア293

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jasmine-jp

2020/09/15 05:51

undefinedが型にあるとやりたいことができませんでした。 内容を書き換えますので回答いただけますと幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問