IModal、IEmbeddedまたはITabで拡張される基本インターフェイスIScreenを継承しようとしていて、インターフェイスに固有のメソッドをロックするようにしています。しかし何が起こるかは、方法public OpenModal(modal: IModal)
が何らかの理由であらゆるタイプを受け入れることだけです。インターフェイスの引数がすべての型を許可する理由
namespace Framework {
"use strict";
interface IScreen { }
interface IModal extends IScreen { }
interface ITab extends IScreen { }
interface IEmbedded extends IScreen { }
class BaseScreen implements IScreen {
public HandleCloseEvent() {
}
}
class DetailsScreen extends BaseScreen implements IModal {
}
class ListScreen extends BaseScreen implements IEmbedded {
}
class OpenerService {
public OpenScreen(screen: IScreen) {
}
public OpenModal(modal: IModal) {
}
}
class Controller {
constructor(openerService: OpenerService) {
var detailsScreen: DetailsScreen = new DetailsScreen();
var listScreen: ListScreen = new ListScreen();
openerService.OpenModal(212121); // Expected error
openerService.OpenModal(listScreen); // Expected error
}
}
}
- 私はすべてのエラーを受信していない ていますいくつかのコンパイラ構成足りませんか?
- インターフェイスの仕組みを誤解していますか?
私はあなたのインターフェイスが空であるため、この問題が発生したと考えています。プロパティを追加すると変更されるはずです。 –