klasse - Arrays i TypeScript


Jeg har problemer med å erklære en array i TypeScript og få tilgang til den.

nedenfor er koden som fungerer for meg

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);

Når jeg endrer koden min som vist nedenfor, mislykkes det når jeg prøver å tilordne en verdi til et array-element.

var bks: Book[] = new Book[2];
bks[0].Author = "vamsee";
bks[0].BookId = 1;
return bks.length;

For at jeg skal legge til et objekt i en løkke, må jeg gjøre det på den andre måten.

Svar #1

Dette er en veldig C#-type kode:

var bks: Book[] = new Book[2];

I Javascript/Typescript allokerer du ikke minne på forhånd på den måten, og det betyr noe helt annet. Slik ville du gjort det du ønsker å gjøre:

var bks: Book[] = [];
bks.push(new Book());
bks[0].Author = "vamsee";
bks[0].BookId = 1;
return bks.length;

Nå for å forklare hva new Book[2]; ville bety. Dette ville faktisk bety å kalle new-operatoren på verdien av Book[2]. f.eks.:

Book[2] = function (){alert("hey");}
var foo = new Book[2]

og du burde se hei. Prøv det

Svar #2

Du kan også gjøre dette (kortere vei) i stedet for å måtte gjøre instansdeklarasjon. Du gjør dette i JSON i stedet.

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.

Relaterte artikler