我有以下表达式:
public mySentences:Array<string> = [
{id: 1, text: 'Sentence 1'},
{id: 2, text: 'Sentence 2'},
{id: 3, text: 'Sentence 3'},
{id: 4, text: 'Sentenc4 '},
];
这是行不通的,因为我的数组不是string
类型而是包含对象列表。如何对数组进行delcare以包含对象列表?
*没有一个新的组件声明一个似乎浪费的句子类
答案 0 :(得分:63)
我假设您正在使用打字稿。
为了格外谨慎,您可以将#!/usr/bin/env node
var grunt = require('grunt');
console.log(" ********* Prepare code for shipment ********* ");
grunt.tasks(['ship']);
定义为需要匹配某个界面的对象数组:
type
或者没有定义自定义类型的短语法:
type MyArrayType = Array<{id: number, text: string}>;
const arr: MyArrayType = [
{id: 1, text: 'Sentence 1'},
{id: 2, text: 'Sentence 2'},
{id: 3, text: 'Sentence 3'},
{id: 4, text: 'Sentenc4 '},
];
答案 1 :(得分:16)
public mySentences:Array<Object> = [
{id: 1, text: 'Sentence 1'},
{id: 2, text: 'Sentence 2'},
{id: 3, text: 'Sentence 3'},
{id: 4, text: 'Sentenc4 '},
];
或者更确切地说......
export interface type{
id:number;
text:string;
}
public mySentences:type[] = [
{id: 1, text: 'Sentence 1'},
{id: 2, text: 'Sentence 2'},
{id: 3, text: 'Sentence 3'},
{id: 4, text: 'Sentenc4 '},
];
答案 2 :(得分:9)
如果您想存储来自外部API或数据库的数据,另一种特别有用的方法是:
创建一个代表您的数据模型的类
export class Data{
private id:number;
private text: string;
constructor(id,text) {
this.id = id;
this.text = text;
}
在组件类中,您创建一个类型为Data
的空数组,并在您从API或您正在使用的任何数据源获得响应时填充此数组
export class AppComponent {
private search_key: string;
private dataList: Data[] = [];
getWikiData() {
this.httpService.getDataFromAPI()
.subscribe(data => {
this.parseData(data);
});
}
parseData(jsonData: string) {
//considering you get your data in json arrays
for (let i = 0; i < jsonData[1].length; i++) {
const data = new WikiData(jsonData[1][i], jsonData[2][i]);
this.wikiData.push(data);
}
}
}
答案 3 :(得分:3)
首先,生成界面
假设您正在使用TypeScript&amp; Angular CLI,您可以使用以下命令生成一个
ng g interface car
之后设置其属性的数据类型
// car.interface.ts
export interface car {
id: number;
eco: boolean;
wheels: number;
name: string;
}
您现在可以在所需的类中导入您的界面。
import {car} from "app/interfaces/car.interface";
通过推送数组中的项目来更新汽车对象的集合/数组。
this.car.push({
id: 12345,
eco: true,
wheels: 4,
name: 'Tesla Model S',
});
有关接口的更多信息:
接口是TypeScript工件,它不是ECMAScript的一部分。接口是一种根据参数及其类型定义函数契约的方法。除了函数之外,接口也可以与Class一起使用以定义自定义类型。 接口是一种抽象类型,它不像类那样包含任何代码。它仅定义API的“签名”或形状。在转换过程中,接口不会生成任何代码,它仅在开发期间由Typescript用于类型检查。 - https://angular-2-training-book.rangle.io/handout/features/interfaces.html
答案 4 :(得分:2)
public mySentences:Array<any> = [
{id: 1, text: 'Sentence 1'},
{id: 2, text: 'Sentence 2'},
{id: 3, text: 'Sentence 3'},
{id: 4, text: 'Sentenc4 '},
];
OR
public mySentences:Array<object> = [
{id: 1, text: 'Sentence 1'},
{id: 2, text: 'Sentence 2'},
{id: 3, text: 'Sentence 3'},
{id: 4, text: 'Sentenc4 '},
];
答案 5 :(得分:0)
数据类型:array_name:datatype[]=[];
字符串示例:users:string[]=[];
对于对象数组:
对象类型:object_name:objecttype[]=[{}];
用户示例:Users:user[]=[{}];
如果在某些情况下绑定中未定义它,请确保在Oninit()
上对其进行初始化。
答案 6 :(得分:0)
type NumberArray = Array<{id: number, text: string}>;
const arr: NumberArray = [
{id: 0, text: 'Number 0'},
{id: 1, text: 'Number 1'},
{id: 2, text: 'Number 2'},
{id: 3, text: 'Number 3 '},
{id: 4, text: 'Number 4 '},
{id: 5, text: 'Number 5 '},
];