gpt4 book ai didi

javascript - 使用类数组的更简单方法

转载 作者:行者123 更新时间:2023-11-30 09:14:14 25 4
gpt4 key购买 nike

我有一个类,然后定义了一个类的数组,每次我想向数组添加一个节点时,我都必须提到我不喜欢的类名:

export class ItemModel {
constructor(
ID,
Name
) {
this.ID = ID;
this.Name = Name;
}
}

export var ItemsArray = [];

ItemsArray.push(new ItemModel(0, "BreakFast"));
ItemsArray.push(new ItemModel(1, "Lunch"));
ItemsArray.push(new ItemModel(2, "Dinner"));

看完这篇文章后:

https://answers.unity.com/questions/637902/how-to-use-javascript-array-with-classes.html

我在定义数组时尝试声明类:

var ItemsArray : ItemModel[];

但我收到错误消息:“类型只能在 .ts 文件中使用。

我在谷歌上搜索了那个,但没有一个有用。

如有任何建议,我们将不胜感激。

最佳答案

您链接到的帖子正在使用 TypeScript ,这是一种不同于 JavaScript 的语言:它是 JavaScript 的超集(编译为 JavaScript),添加了静态类型(以及一些其他功能,例如构造函数中的自动属性初始化)。

此 TypeScript 行:

var ItemsArray : ItemModel[];

相当于这个 JavaScript:

var ItemsArray;

只是 TypeScript 版本声明了 ItemsArray 变量具有静态类型 ItemModel[]

如果您使用的是 JavaScript 本身,则无需定义变量的类型。你的 export var ItemsArray = []; 很好(除此之外我会使用 letconst 而不是 var)。


旁注:您可以使用数组初始值设定项在 JavaScript 中更简洁地编写该数组:

export const ItemsArray = [
new ItemModel(0, "BreakFast"),
new ItemModel(1, "Lunch"),
new ItemModel(2, "Dinner")
];

这也是有效的 TypeScript,即使没有类型声明:TypeScript 会推断您希望 ItemsArray 的类型为 ItemModel[](因为 TypeScript 确实 type inference它可以看到您正在使用 ItemModel 对象填充 ItemsArray

如果你想从一个空数组开始但仍然给它一个静态类型,你可以这样做:

//                                   /------ Telling TypeScript to use ItemModel[]
// vvvvvvvvvvvvv as the type
export const ItemsArray : ItemModel[] = [];
// ^^^^^-- Initializing ItemsArray with an
// empty array

然后你的 push 调用将被类型检查,所以这会起作用:

ItemsArray.push(new ItemModel(0, "BreakFast"));

但这会导致错误(在 TypeScript->JavaScript 编译期间)

ItemsArray.push("BreakFast");

因为 "Breakfast"ItemModel 不兼容。


旁注 2:JavaScript(和 TypeScript)中压倒性的约定是变量以小写字母开头,而不是大写字母。所以 itemsArray 而不是 ItemsArray

关于javascript - 使用类数组的更简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56380852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com