Ένα Δακτυλόγραφο φάσμα λειτουργιών

ψήφοι
43

Είμαι αγωνίζονται να καταλάβω αν είναι δυνατόν σε γραφομηχανή για να δηλώσει μια στατικά δακτυλογραφημένη σειρά από λειτουργίες.

Για παράδειγμα, μπορώ να το κάνω αυτό:

foo: (data:string) => void = function (data) {};

Αλλά αν θέλετε foo να είναι μια σειρά από λειτουργίες που λαμβάνουν μια σειρά και να επιστρέψει τίποτα, πώς μπορώ να το κάνω;

foo: (data:string) => void [] = [];

Δεν λειτουργεί, γιατί γραφομηχανή νομίζει ότι είναι μια συνάρτηση που παίρνει μια συμβολοσειρά και επιστρέφει μια σειρά από κενό, και δεν φαίνεται να αρέσει μου προσπαθώντας να τυλίξετε τη λειτουργία σε παρένθεση.

Καμιά ιδέα?

Απάντηση : Χάρη στην Mohamed κάτω, εδώ είναι ένα παράδειγμα που λειτουργεί στη γραφομηχανή χαρά:

class whatever {
public foo: { (data: string): void; }[] = [];

    dofoo() {
        for (var i=0; i < this.foo.length; i++) {
             this.foo[i](test);
        }
    }
}

var d = new whatever();

d.foo.push(function(bar){alert(bar)})
d.foo.push(function(bar){alert(bar.length.toString())})

d.dofoo();
Δημοσιεύθηκε 04/10/2012 στις 20:41
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
61

Μπορείτε να το βρείτε στο spec γλώσσα ενότητα 3.5.5:

foo: { (data: string): void; } []
Απαντήθηκε 04/10/2012 στις 20:55
πηγή χρήστη

ψήφοι
28

Άλλο (νεότερα, πιο ευανάγνωστο) τρόποι για να πληκτρολογήσετε μια σειρά από λειτουργίες χρησιμοποιώντας λίπους βέλη:

let foo: Array<(data: string) => void>;
let bar: ((data: string) => void)[];
Απαντήθηκε 23/04/2017 στις 15:28
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more