Les exemples de code dans cette réponse supposent la déclaration suivante:
var implementation: MyInterface;
Fournir une implémentation d'une interface appelable
En tant que suivi de la réponse acceptée , comme suggéré par certains de ses commentors, une fonction qui correspond à la signature d'appel de l'interface implémente implicitement l'interface. Vous pouvez donc utiliser une fonction d'appariement comme une mise en œuvre.
Par exemple:
implementation = () => "Hello";
Vous n'avez pas besoin de spécifier explicitement que la fonction implémente l'interface. Toutefois, si vous voulez être explicite, vous pouvez utiliser un casting:
implementation = <MyInterface>() => "Hello";
Fournir une mise en œuvre réutilisable
Si vous voulez produire une implémentation de l'interface réutilisable comme vous le feriez normalement avec une interface Java ou C #, juste stocker la fonction quelque part accessible à ses consommateurs.
Par exemple:
function Greet() {
return "Hello";
}
implementation = Greet;
Fournir une mise en œuvre paramétrés
Vous voudrez peut-être en mesure de paramétrer la mise en œuvre de la même manière que vous pourriez paramétriser une classe. Voici une façon de le faire:
function MakeGreeter(greeting: string) {
return () => greeting;
}
implementation = MakeGreeter("Hello");
Si vous voulez que le résultat soit tapé comme l'interface, juste définir explicitement le type de retour ou coulée la valeur retournée.