如何使用typescript

时间:2017-09-16 02:22:43

标签: typescript

我有一个数组名称菜并有一个表格。表格提交后,数据推送到菜。我曾尝试使用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;
}

我的git:https://github.com/zymethyang/Ionic_HKUST

5 个答案:

答案 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 上的实时代码并点击运行

您可以了解更多关于泛型类型变量 herehere