Πώς να δηλώσει Τύποι Επιστροφή για τις λειτουργίες στη γραφομηχανή

ψήφοι
68

Έλεγξα εδώ http://go.microsoft.com/fwlink/?LinkId=267238 ποια είναι η γραφομηχανή Γλώσσα προδιαγραφές , αλλά δεν μπορούσα να δω ένα πράγμα ότι το πώς μπορώ να κηρύξει ένα είδος επιστροφής της συνάρτησης. Μου έδειξε αυτό που περίμενα στον παρακάτω κώδικα:greet(name:string) :string {}

class Greeter {
    greeting: string;
    constructor (message: string) {
        this.greeting = message;
    }
    greet() : string{
        return Hello,  + this.greeting;
    }
}  

Βλέπω μπορούμε να χρησιμοποιήσουμε κάτι (name:string) => any, αλλά χρησιμοποιούνται ως επί το πλείστον κατά τη διέλευση λειτουργίες επανάκλησης γύρω από:

function vote(candidate: string, callback: (result: string) => any) {
// ...
}
Δημοσιεύθηκε 04/10/2012 στις 22:28
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
61

Έχετε δίκιο - εδώ είναι ένα παράδειγμα πλήρως εργασίας - θα δείτε ότι var resultείναι σιωπηρά μια σειρά γιατί ο τύπος επιστροφής καθορίζεται από την greet()λειτουργία του. Αλλάξτε τον τύπο με numberκαι θα πάρετε τις προειδοποιήσεις.

class Greeter {
    greeting: string;
    constructor (message: string) {
        this.greeting = message;
    }
    greet() : string {
        return "Hello, " + this.greeting;
    }
} 

var greeter = new Greeter("Hi");
var result = greeter.greet();

Εδώ είναι ο αριθμός παράδειγμα - θα δείτε κόκκινο ορνιθοσκαλίσματα στον επεξεργαστή παιδική χαρά αν προσπαθήσετε αυτό:

greet() : number {
    return "Hello, " + this.greeting;
}
Απαντήθηκε 04/10/2012 στις 22:32
πηγή χρήστη

ψήφοι
14

Μπορείτε να διαβάσετε περισσότερα σχετικά με τους τύπους λειτουργίας στην προδιαγραφή γλώσσας στα τμήματα 3.5.3.5 και 3.5.5.

Ο compiler γραφομηχανή θα συμπεράνει τύπους, όταν μπορεί, και αυτό γίνεται δεν χρειάζεται να καθορίσετε σαφείς τύπους. Έτσι, για παράδειγμα greeter, χαιρετούν () επιστρέφει ένα string γραμματική, η οποία λέει στον μεταγλωττιστή ότι ο τύπος της συνάρτησης είναι ένα string, και δεν χρειάζεται να καθορίσετε έναν τύπο. Έτσι, για παράδειγμα σε αυτό το δείγμα, έχω την τάξη greeter με μια μέθοδο Greet που επιστρέφει ένα string, και μια μεταβλητή που έχει εκχωρηθεί στο νούμερο κυριολεκτική. ο compiler θα συμπεράνει και τους δύο τύπους και θα λάβετε ένα σφάλμα αν προσπαθήσετε να ορίσετε ένα string σε έναν αριθμό.

class Greeter {
    greet() {
        return "Hello, ";  // type infered to be string
    }
} 

var x = 0; // type infered to be number

// now if you try to do this, you will get an error for incompatable types
x = new Greeter().greet(); 

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

function foo(){
    if (true)
        return "string"; 
    else 
        return 0;
}

Αυτό, όμως, θα λειτουργήσει:

function foo() : any{
    if (true)
        return "string"; 
    else 
        return 0;
}
Απαντήθηκε 04/10/2012 στις 23:43
πηγή χρήστη

ψήφοι
2
functionName() : ReturnType { ... }
Απαντήθηκε 01/01/2018 στις 16:43
πηγή χρήστη

ψήφοι
0

Επιστροφή τύπους χρησιμοποιώντας τα βέλη συμβολισμός είναι το ίδιο με το προηγούμενο απαντήσεις:

const sum = (a: number, b: number) : number => a + b;
Απαντήθηκε 04/11/2018 στις 20:45
πηγή χρήστη

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