2016-08-08 20 views
1

Ich habe eine Klasse hier:Fehler beim Instanziieren Klasse: Geliefert Parametern entsprechen keine Unterschrift von Rufziel

export class MyClass { 
    public name:string; 
    public addr:string; 

    constructor() {} 
} 

Und ich importieren Sie es hier:

import { MyClass } from './MyClass'; 

// and use it here: 

class MyUser { 
    private _prop : MyClass[]; 

    constructor() { 
     this._prop = [ 
      new MyClass({name: 'Hello', addr: 'World'}) //<--- this is where the error appears 
     ] 
    } 
} 

Wenn ich das tue ich ein Fusselfehler:

Supplied parameters do not match any signature of call target 

Warum kann ich meine Klasse nicht instanziieren?

+0

Sieht aus wie Sie Typoskript erwarten Objekt haben Fähigkeiten zu initialisieren wie C# funktioniert. Aber Typescript hat das nicht :( – Vaccano

Antwort

1

Sie haben keinen Parameter in Ihrem MyClass-Konstruktor erwähnt. Sie müssen den Parameter in den Konstruktor setzen, damit Sie bei der Instanziierung dieser Klasse Werte festlegen können. Sie können die Eigenschaften MyClass in den Konstruktor parameter verschieben, um die Syntax wie unten verkürzt zu gestalten.

export class MyClass { 
    //by having `public` on constructor shortened the syntax. 
    constructor(public name: string, public addr:string) { 

    } 
} 

constructor() { 
    this._prop = [ 
     new MyClass('Hello', 'World') 
    ] 
} 

Playground Demo

+0

Immer noch den Fehler – dopatraman

+0

@dopatraman Blick auf die aktualisierte Antwort, danke –

1

Sie sollten die folgenden für Ihren Konstruktor haben. In Ihrem Fall definiert man keine Parameter:

constructor(param:{name:string, addr:string}) { 
    this.name = param.name; 
    this.addr = param.addr; 
} 

Eine weitere Möglichkeit wäre, Ihre Klasseneigenschaften auf der Ebene der Konstruktor zu definieren:

constructor(public name:string, public addr:string) { 
    // No need for this: 
    // this.name = name; 
    // this.addr = addr; 
} 

Sie jetzt Parameter zu Ihrem Konstruktor übergeben können und sie‘ ll verwenden, um die Instanz-Eigenschaften zu initialisieren:

constructor() { 
    this._prop = [ 
    new MyClass('Hello', 'World'}) 
    ]; 
}