Search code examples
typescripthybrid

TypeScript hybrid type implementation


On http://www.typescriptlang.org/Handbook#interfaces website Hybrid Types are explained. As these are extremely helpful for creating typings to JS - I wonder if it's possible to define a class implementing e.g. such interface:

interface Counter {
    (start: number): string;
    interval: number;
    reset(): void;
}

If not then maybe it's possible to create just an object of that type? How?


Solution

  • I wonder if it's possible to define a class implementing

    No

    If not then maybe it's possible to create just an object of that type?

    Yes. There will be some use of a type assertion (or any):

    interface Counter {
        (start: number): string;
        interval: number;
        reset(): void;
    }
    
    function getCounter():Counter{
        var counter = <Counter>function(start:number){};
        counter.interval = 123;
        counter.reset = function(){};
        return counter;
    }