可选属性(属性后添加?)
只读属性(readyonly vs const 变量/属性)
额外的属性检查 (创建接口对象属性类型相同名字不同,正常来说是不行的)
函数类型(接口内声明函数参数,返回值类型等)
可索引的类型(number可做数组,string可做键值对)
类类型-实现接口(也可以在接口中声明一个方法,在类里实现它)
-类静态部分与实例部分的区别(暂时没看懂这诡异语法?)
-继承接口(和类一样,接口也可以相互继承,
折让我们能够从一个接口里复制成员到另一个接口里,可以更灵活地将接口风格到可重用的模块里)
-混合类型(接口能够描述JavaScript里丰富的类型,因为JavaScript其动态灵活的特点,
有时你会希望一个对象可以听同事有上面提到的多种类型)
一个对象可以同时作为函数和对象使用,并且带有额外的属性。
interface Counter{
(start: number):string;
interval:number;
reset();void;
}
function getCounter(): Counter{
let counter = <Counter>function(start:number){};
counter.interval = 123;
counter.reset = function(){};
return counter;
}
let c = getCounter();
c(10);
c.reset();
c.interval = 5.0;
-接口继承类
当接口继承了一个类类型时,它会继承类的成员但不包括其实现。
就好像接口声明了所有类中存在的成员,但并没有提供具体实现一样。
接口同样会继承到类的private和protected成员。
这意味着当你创建了一个接口继承了一个拥有私有或受保护的成员的类时,
这个接口类型只能被这个类或其子类所实现(implement)。
隔一个就不行