Types hybrides et interface
Un type hybride combine généralement les caractéristiques d'une fonction et d'un objet. Il est défini à l'aide d'une interface qui spécifie à la fois une signature de fonction et des champs d'objet. Il est donc possible d'appeler des sous méthodes
interface Counter {
(start: number): string; // Signature de fonction
interval: number; // Propriété d'objet
reset(): void; // Méthode d'objet
}
function getCounter(): Counter {
let counter = <Counter>function (start: number) {
return `Counting from ${start}`;
};
counter.interval = 1000;
counter.reset = function () {
console.log("Counter reset.");
};
return counter;
}
let c = getCounter();
console.log(c(10)); // Utilise comme fonction
c.reset(); // Utilise comme objet
console.log(c.interval); // Accès à la propriété