使用接口表示混合类型

当一个对象既可以被当做函数使用,又可以作为对象拥有多个属性的时候,我们可以用接口来描述这个对象的形状:

  1. interface Slider {
  2. (list: string[]): string;
  3. name: string;
  4. start(): void;
  5. }
  6. function initSlider(): Slider {
  7. let slider = <Slider>function(list: string[]) {};
  8. slider.name = "iSlider";
  9. slider.start = function() {};
  10. return slider;
  11. }
  12. let mySlider = initSlider();
  13. mySlider(["a.png", "b.png"]);
  14. mySlider.name = "MySlider";
  15. mySlider.start();