web-dev-qa-db-fra.com

Comment initialiser un tableau dans angular2 et dactylographié

Pourquoi cela se produit-il dans Angular2 et Typescript?

export class Environment {
    constructor(
      id: string,
      name: string
    ) { }
}


 environments = new Environment('a','b');



app/environments/environment-form.component.ts(16,19): error TS2346: Supplied parameters do not match any signature of call target.

Comment puis-je initialiser un tableau?

17
Tampa

Les définitions de classe devraient être comme:

export class Environment {
    cId:string;
    cName:string;

    constructor( id: string, name: string ) { 
        this.cId = id;
        this.cName = name;
    }

    getMyFields(){
        return this.cId + " " + this.cName;
    }
}

 var environments = new Environment('a','b');
 console.log(environments.getMyFields()); // will print a b

Source: https://www.typescriptlang.org/docs/handbook/classes.html

6
eko

Vous pouvez utiliser cette construction:

export class AppComponent {

    title:string;
    myHero:string;
    heroes: any[];

    constructor() {
       this.title = 'Tour of Heros';
       this.heroes=['Windstorm','Bombasto','Magneta','Tornado']
       this.myHero = this.heroes[0];
    }
}
39
Temitope Fatayo

vous pouvez créer et initialiser un tableau de tout objet comme celui-ci.

hero:Hero[]=[];
14
Mahesh Yadav

Je ne comprends pas bien ce que vous entendez vraiment par l'initialisation d'un tableau?

Voici un exemple:

class Environment {

    // you can declare private, public and protected variables in constructor signature 
    constructor(
        private id: string,
        private name: string
    ) { 
        alert( this.id );
    }
}


let environments = new Environment('a','b');

// creating and initializing array of Environment objects
let envArr: Array<Environment> = [ 
        new Environment('c','v'), 
        new Environment('c','v'), 
        new Environment('g','g'), 
        new Environment('3','e') 
  ];

Essayez-le ici: https://www.typescriptlang.org/play/index.html

2
Priyesh Kumar

Pour être plus concis, vous pouvez déclarer les paramètres du constructeur sous la forme public, qui créent automatiquement des propriétés portant le même nom. Ces propriétés sont disponibles via this:

export class Environment {

  constructor(public id:number, public name:string) {}

  getProperties() {
    return `${this.id} : ${this.name}`;
  }
}

let serverEnv = new Environment(80, 'port');
console.log(serverEnv);

 ---result---
// Environment { id: 80, name: 'port' }
0
user6453173

salut @ JackSlayer94 s'il vous plaît trouver l'exemple ci-dessous pour comprendre comment faire un tableau de taille 5. 

class Hero {
    name: string;
    constructor(text: string) {
        this.name = text;
    }

    display() {
        return "Hello, " + this.name;
    }

}

let heros:Hero[] = new Array(5);
for (let i = 0; i < 5; i++){
    heros[i] = new Hero("Name: " + i);
}

for (let i = 0; i < 5; i++){
    console.log(heros[i].display());
}

0
Mahesh Yadav