Как инициализировать массив в угловом2 и машинописном тексте
Почему это происходит в Angular2 и Typcript?
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.
Как выполнить инициализацию массива?
Ответы
Ответ 1
Определения классов должны быть следующими:
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
Источник: https://www.typescriptlang.org/docs/handbook/classes.html
Ответ 2
Вы можете использовать эту конструкцию:
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];
}
}
Ответ 3
вы можете создать и инициализировать массив любого объекта, подобного этому.
hero:Hero[]=[];
Ответ 4
Я не полностью понимаю, что вы на самом деле подразумеваете при инициализации массива?
Вот пример
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')
];
Попробуйте здесь: https://www.typescriptlang.org/play/index.html
Ответ 5
Чтобы сделать более кратким вы можете объявить параметры конструктора как public
которые автоматически создают свойства с одинаковыми именами, и эти свойства доступны через 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' }
Ответ 6
Привет @JackSlayer94, пожалуйста, найдите приведенный ниже пример, чтобы понять, как создать массив размером 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());
}