2017-07-23 4 views
0

Ich habe noImplicitAny in meinem tsconfig auf true gesetzt. So war ich überrascht, als es mir ermöglichte, Funktionsrückgabetypen wegzulassen. Ich habe eine Getter-Funktion, die wie folgt aussieht:Warum erlaubt TypeScript mir, den Rückgabetyp einer Funktion wegzulassen?

get name() { 
    return `${this.valueName} of ${this.suitName}`; 
} 

Q1: Was ist der Rückgabetyp des Namens() Getter? Ist es eine?

Q2: Und wenn es welche gibt, warum ist das erlaubt, dass ich noImplicitAny auf wahr gesetzt habe?

Antwort

2

Die Konfiguration noImplictAny zwingt Sie, einen Typ zu definieren, für den TypeScript ihn nicht ableiten kann. Zum Beispiel:

let x; 
function f(a) { 
    x = a; 
} 

Es gibt keine Möglichkeit, hier Typoskript kann sicher wissen, welche Art a oder x sein sollte. Hier würde der Compiler Sie davor warnen, implizit zu verwenden.

In diesem Code:

get name() { 
    return `${this.valueName} of ${this.suitName}`; 
} 

Typoskript kann hier schließen Sie eine string zurückkehren.

Beachten Sie, dass Sie nicht jedes Argument oder jede Variable definieren müssen. Das wäre pedantisch in Fällen wie:

// Verbose 
const x : string = "hi"; 
// Compact yet enough 
const x = "hi"; 
Verwandte Themen