我有一个数组名称菜并有一个表格。表格提交后,数据推送到菜。我曾尝试使用push方法将其添加到数组中,但它有错误。我怎么能用打字稿做到这一点? 非常感谢你。 类对象。
export interface Dish {
id: number;
name: string;
image: string;
category: string;
label: string;
price: string;
featured: boolean;
description: string;
comments: Comment[];
}
我已经从类注释中创建了一个对象名称commentData,以便在提交后从表单接收所有数据。我还从Dish类中创建了一个对象名称菜。如何将对象commentData推送到对象dish.comments
export interface Comment {
rating: number;
comment: string;
author: string;
date: string;
}
答案 0 :(得分:1)
如果您只是需要在每个表单提交后添加新的commentData
(如果我理解正确的话),那么每次您希望将新注释推送到现有{{1}时,您只需要这样做},
dish.comments
这对你有用吗?
修改强>
修改第一行
this.dish.comments = this.dish.comments.push(this.commentData); // assuming these are class properties, hence the 'this' usage
在this.commentData = this.comment.value;
方法中,
dismiss()
答案 1 :(得分:0)
let myArray= [];
let commentData = {} as Dish;
commentData.id = 3;
commnetData.name = 'something';
...
myArray.push(commentData);
它会起作用......
答案 2 :(得分:0)
let arraylist= [];
let obj1 = {} as Class;
obj1.id = 1;
obj1.name = 'text';
let obj2 = {} as Class;
obj2.id = 1;
obj2.name = 'text';
arraylist =[obj1,obj2 ];
这项工作对我来说,但我尝试使用Classes
答案 3 :(得分:0)
如果您需要将多个对象添加到循环内的数组中:
let thingsArray = [];
someArray.forEach(doc => {
let thingsObj = {} as Thingy;
thingsObj.weekDue = doc.name;
thingsObj.title = doc.age;
thingsArray.push(thingsObj);
}).then(() => {
console.log(thingsArray);
}
答案 4 :(得分:0)
回答如何在 TypeScript 中将 Comment
(对象)推入 Dish.comments
(数组)。
export interface Dish {
id: number;
name: string;
image: string;
category: string;
label: string;
price: string;
featured: boolean;
description: string;
// comments: Comment[]; // remove this
comments: Array<Comment>; // <--- change to this. everytime you want to add array use Array<YourInterface>
}
export interface Comment {
rating: number;
comment: string;
author: string;
date: string;
}
dish.comments.push(commentData);
查看 TypeScript Playground 上的实时代码并点击运行。
正如你在上面的代码中看到的。您需要将 Comment[]
更改为 Array<Comment>
。
Array<T>
或 Array<Type>
您可能已经从 Java 和 C# 等其他语言中熟悉了这种类型。
我们在打字稿中也有通用类型变量。
使用泛型类型变量的另一种方式:
以下是具有多种类型的数组示例:
let x: Array<string | number>
x = ["hello", "world", 2]
如果您的数组由不同类型的对象组成,则第二个版本很常见。例如:
interface Boat {
name: string
}
interface SpaceShip {
code: number
}
interface Wagon {
active: boolean
}
let inventory: Array<Boat | SpaceShip | Wagon> = [];
let boatData: Boat = {
name: "Boat 1"
}
let spaceShipData: SpaceShip = {
code: 1234
}
let wagonData: Wagon = {
active: true
}
inventory.push(boatData);
inventory.push(spaceShipData);
inventory.push(wagonData);
console.log(inventory);
查看 TypeScript Playground 上的实时代码并点击运行。