bonjour à toutes et à tous.

Je cherche à faire un système de delegate inspiré du C# avec typescript.
Je suis arrivé globalement au résultat en réussissant à appeler la fonction f1() de la class A à partir de la classe B. Sauf que je ne peut pas modifier un état de la classe A puisque le this est dans le contexte de la classe B.
Voici un bout de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 
interface Delegate {
    (message : string): void
}
 
interface Delegate1 {
    () : void
}
 
export class Timer {
    private _func : Delegate
    private _func1 : Delegate1
    // private _self : object
    constructor(del : Delegate, message : string, del1 : Delegate1) {
        this._func = del
        this._func1 = del1
        this.execute(message) // test delegate simple
        this.exeF1()  // test delegate avec besoin de modification d'état de la classe B
    }
 
    execute(mess : string) {
        console.log("execute()")
        this._func(mess)
    }
 
    exeF1() {
        console.log("F1()")
        this._func1() // <----- appel de la fonction via le "delegate". On appel ici B.calledF1()
    }
}
 
class B {
    private timer : Timer
    private _count : number = 0
    private nameTest : string = "bonjour"
    constructor() {
        console.log("entering class B")
        this.timer = new Timer(this.called, "it woks !", this.calledF1)
        this._count = 0
    }
 
    getCount() {
        return this._count
    }
 
    incCount() {
        this._count++
        this.test()
    }
 
    called(message : string) {
        console.log("into call() with message :", message)
        this._count += 1
    }
 
    calledF1() { // appel depuis Timer.func1()
 
        this._count += 5 // <------------ ici this._count n'est pas modifié car inconnu de la classe Timer.
        console.log("counter calledF1() =",this._count) // --->  this._count vaut Nan
    }
 
    print() {
        console.log("valeur de count : "+this._count)
    }
}
 
console.log("create new object B")
const b = new B()
b.print() // <--- out = 0
b.incCount()
console.log("count :",b.getCount())  // <---out = 1
Quelqu'un a t-il déjà réalisé ce type de fonctionnement ?
Ou vaut-il mieux passer par un pattern observateur ?

Merci à vous