typescript 中的数组

标签 arrays class object typescript

我发现很难在 typescript 中声明数组并访问它。

下面是适合我的代码

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

当我如下更改我的代码时,尝试将值分配给数组项时失败。

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

要在循环中添加对象,我必须采用第二种方式。

最佳答案

这是一段非常 C# 类型的代码:

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

在 Javascript/Typescript 中,你不会像那样预先分配内存,这意味着完全不同的东西。这就是您做您想做的事情的方式:

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

现在解释一下 new Book[2]; 的含义。这实际上意味着在 Book[2] 的值上调用 new 运算符。例如:

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

你应该看到嘿。 Try it

关于 typescript 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16233266/

相关文章:

c++ - for循环中的数组索引

javascript - 合并两个对象数组及其属性

c++ - 无法修改类中的非 Const 成员

javascript - 无法推送到数组对象

javascript - 如何添加多个对象到同一个索引中

java - 从一个数组复制到另一个数组的最佳方法

c++ - 输出逻辑错误

javascript - 从 child 更改 parent 的状态时,为什么 parent 不再渲染?

java - java类应该如何组织?

c - 如何将函数作为参数放入 C 中?