2016-04-10 6 views
3

Ich mache meinen ersten Test mit Typescript mit Codepen.io, und ich verstehe nicht, warum, nachdem ich die Funktion Unterschrift und Rückgabetyp über eine Schnittstelle, kann ich dann einen anderen Typ zurückgeben, ohne einen Fehler zu bekommen.Arbeitsfunktion, auch wenn es den falschen Typ zurückgibt

Fehle ich etwas?

Beispielcode:

interface IPerson { 
    getFullName:() => void; 
} 

class Person implements IPerson{ 

constructor(
    public name: string, 
    public surname: string 
){} 

getFullName() { 
    return this.name + ' ' + this.surname; 
} 

} 


let p = new Person('John','Doe'); 

console.log(p.getFullName()); 

Ergebnis:

John Doe 

Problem: Warum ist abzumelden 'John Doe' (ein String), auch wenn ich erklärt a void Rückgabetyp?

Antwort

2

Transcript einen Compiler-Fehler, so etwas wie diese werfen:

Typ ‚string‘ ist nicht übertragbar ‚VOID‘ eingeben.

Allerdings wird Typoskript noch zu Javascript kompilieren. JS selbst hat keine Vorstellung von Typen und wird daher nur den Wert protokollieren, weil die Laufzeit keine Ahnung hat, was der Rückgabetyp getFullName() hat.

Wenn Sie es nicht kompilieren, wenn ein Compilerfehler auftritt, können Sie das Flag noEmitOnError in Ihrem tsconfig.json setzen.

+0

also denkst du, es ist nur eine Art von Codepen-Bug, wie es nur auf JS kompiliert? Ich würde einen Fehler erhalten, wenn ich versuche, den Code mit dem Typescript-Compiler auszuführen, ist das korrekt? – fbid

+0

Ja, Sie erhalten einen Fehler, aber ts werden immer noch die JS-Dateien ausgeben. –

+0

Sie können den gleichen Code auf https://www.typescriptlang.org/play/ versuchen Es sollte definitiv einen Fehler werfen. –

Verwandte Themen