2016-08-20 1 views
1

ich verwende Typoskript mit Angular2, finden Sie meine Klassendeklaration -Typoskript - Problem mit Get Immobilien in Objektinitialisierer

export /** 
* Stress 
*/ 
class Student { 
    FirstName: string; 
    LastName: string; 

    constructor() { 
    } 

    get FullName() : string { 
     return this.FirstName + this.LastName; 
    } 
} 

Wenn ich versuche, die obige Klasse mit folgendem Code zu initialisieren -

var stud1: Student = { FirstName:"John", LastName:"Troy" } 

ich die folgende Fehlermeldung erhalten -

Type '{ FirstName: string; LastName: string; }' is not assignable to type 'Student'. 
Property 'FullName' is missing in type '{ FirstName: string; LastName: string; }'. 

Jede Hilfe bitte, was ich tue, falsch hier, oder es wird noch nicht von TypeScript unterstützt?

+0

* Wenn ich versuche, die obige Klasse zu initialisieren * ich Sie „instanziiert“ bedeuten erraten. –

Antwort

2

Um ein Objekt aus Ihrer Student-Klasse zu konstruieren, müssen Sie den Konstruktor der Klasse verwenden.

var stud1 = new Student(); 
stud1.FirstName = "John"; 
stud1.LastName = "Troy"; 

console.log(stud1.FullName); 

Oder noch besser, lassen Sie den Konstruktor des Objekts Felder initialisieren:

class Student { 
    FirstName: string; //this is public, unless you specify private 
    LastName: string; 

    constructor(firstName: string, lastName: string){ 
     this.FirstName = firstName; 
     this.LastName = lastName; 
    } 

    //your FullName getter comes here 
} 

var stud1 = new Student("John", "Troy"); 
console.log(stud1.FullName); 
+0

Ich hätte das nur tun können, dass ich Objektinitialisierer nützlicher finde. Mehr noch, wenn ich nicht jede "set" -Eigenschaft in den Konstruktor setzen will, was ich in diesem Fall tun muss. Danke für die Antwort. – Raj

+0

Um mit dem Objektinitialisierer zu arbeiten, muss Student Interface sein, aber Student kann keine Methoden enthalten, die Getter enthalten. Sie haben einige Optionen [hier] (http://stackoverflow.com/questions/14142071/typescript-and-field-initializers) diskutiert. – Granga

+0

Danke Granga, das hilft. – Raj