我正在尝试将以下内容转换为工作,但我认为这是一个Es5 / ES6问题。帮助感谢。
this.rows = Array.from(Array(Math.ceil(this.subCategoryModels.length / 3)).keys());
我目前得到的是typscript错误:
[ts]
Property 'from' does not exist on type 'ArrayConstructor'.
any
和
[ts]
Property 'keys' does not exist on type 'any[]'.
any
答案 0 :(得分:1)
类型'ArrayConstructor'上不存在'from'属性。
这表明您希望在仍编译为ES5时使用ES6
类型定义。
在TypeScript latest中推荐lib
选项:
"compilerOptions": {
"target": "es5",
"lib": ["es6", "dom"]
}
https://basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html#lib-option
答案 1 :(得分:0)
由于您看到了这些错误,我假设您正在编译ES5。您可以使用typings使Typescript识别数组的es2015函数。
首先,如果尚未安装,请安装typings。
npm install typings --global
安装打字后,请安装ES2015阵列功能的类型定义。
typings install -SG env~es2015-array
如果您的目标是不支持新数组功能的浏览器,则还需要添加填充。
答案 2 :(得分:0)
我最终做了以下事情:
<强> HTML 强>
<ion-row *ngFor="let trio of getTriples()">
<ion-col *ngFor="let item of trio" (click)="itemTapped(item)">
<div class="row responsive-md">
<div id="icon-image-{{item.id}}"><img src="data:image/png;base64,{{item.icon}}" height="75" width="75" /></div>
<p>{{item.name}}</p>
</div>
</ion-col>
</ion-row>
<强>打字稿强>
getTriples() {
let triples = [];
let length = this.subCategoryModels.length;
for (let i = 0; i < length; i += 3) {
let trio = [];
trio.push(this.subCategoryModels[i]);
if (i + 1 < length) {
trio.push(this.subCategoryModels[i + 1]);
}
if (i + 2 < length) {
trio.push(this.subCategoryModels[i + 2]);
}
triples.push(trio);
}
return triples;
}