我试图继承基本接口IScreen将IModal,IEmbedded或ITab扩展,并锁定方法,以便它们特定于接口。但是会发生什么是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
}
}
}
- 我失去了,我没有收到 任何错误,一些编译器配置?
- 我误解了界面是如何工作的?
我相信这是因为你的接口是空的;它应该在你添加属性时改变。 –