我试图继承基本接口IScreen,它将使用IModal,IEmbedded或ITab进行扩展,并锁定方法以使它们特定于接口。但是,由于某种原因,方法foo = [
{
"id":13,
"title":"Some title 1",
...
},
{
"id":15,
"title":"Some title 3",
...
}]
result = {}
foo.each {|f| result[f.delete('id')] = f}
只接受任何类型。
public OpenModal(modal: IModal)
答案 0 :(得分:2)
这是TypeScript的工作方式:使用结构类型(也称为 duck typing )。
你声明:
'\.'
因为所有接口都是空的,所以它等同于写:
public OpenModal(modal: IModal) {
}
此签名接受每个对象,因为所有对象都与空对象兼容。 public OpenModal(modal: {}) {
}
是一个对象(在JavaScript中,数字是一个对象)。 212121
也是一个对象。
您可以注意到为空对象类型声明几个接口是没用的:
listScreen
在这里,您的所有接口都是等效的。没有等级。你可以这样做:
interface IScreen { }
interface IModal extends IScreen { }
interface ITab extends IScreen { }
interface IEmbedded extends IScreen { }
另见: