J'ai de la difficulté à déclarer un tableau dans TypeScript et à y accéder.
ci-dessous le code fonctionne pour moi
class Book {
public BookId: number;
public Title: string;
public Author: string;
public Price: number;
public Description: string;
}
class dataservice {
getproducts() {
var bk = new Book();
bk.Author = "vamsee";
bk.BookId = 1;
var bks: Book[] = [bk,bk];
return bks.length;
}
}
var ds = new dataservice();
var button = document.createElement('button');
button.onclick = function () {
alert(ds.getproducts().toString());
}
document.body.appendChild(button);
Lorsque je modifie mon code comme ci-dessous, il échoue lors de la tentative d'attribution d'une valeur à un élément de tableau.
var bks: Book[] = new Book[2];
bks[0].Author = "vamsee";
bks[0].BookId = 1;
return bks.length;
Pour que je puisse ajouter un objet dans une boucle, je dois le faire de la deuxième manière.
C'est un type de code très c #:
var bks: Book[] = new Book[2];
En Javascript/TypeScript, vous n'allouez pas de mémoire à l'avance de cette façon, ce qui signifie quelque chose de complètement différent. Voici comment vous feriez ce que vous voulez faire:
var bks: Book[] = [];
bks.Push(new Book());
bks[0].Author = "vamsee";
bks[0].BookId = 1;
return bks.length;
Maintenant, pour expliquer ce que new Book[2];
signifierait. Cela signifierait en fait que l'appel du nouvel opérateur sur la valeur de Book [2]. par exemple.:
Book[2] = function (){alert("hey");}
var foo = new Book[2]
et vous devriez voir hey. Essayez-le
Vous pouvez également le faire également (coupe plus courte) au lieu de devoir faire une déclaration d'instance. Vous faites cela en JSON à la place.
class Book {
public BookId: number;
public Title: string;
public Author: string;
public Price: number;
public Description: string;
}
var bks: Book[] = [];
bks.Push({BookId: 1, Title:"foo", Author:"foo", Price: 5, Description: "foo"}); //This is all done in JSON.