这个问题来自How to push item to [string] in TypeScript
我想创建如下的功能 .
declare var sqlitePlugin:any;
getItems(options, callback) {
var query: string = `SELECT item_code,
item_name
FROM items `;
var param: [string];
if (options['limit']) {
var limit = options['limit'];
query = query + " LIMIT ? ";
param.push(String(limit));
}
if (options['offset']) {
var offset = options['offset'];
query = query + " OFFSET ? ";
param.push(String(offset));
}
this.execQuery(query, param, (resultSet)=>{
this.items = [];
for(let i = 0; i < resultSet.rows.length; i++) {
var item: Item = new Item();
item.code = resultSet.rows.item(i).item_code;
item.name = resultSet.rows.item(i).item_name;
this.artists.push(item);
}
callback(this.items);
} );
}
execQuery函数需要将'param'参数设置为 [string]
的类型 .
所以我将'param'元组声明为 [string]
.
我想通过 options['limit']
和 options['offset']
值动态更改参数元组 .
但 param.push(String(limit));
失败,因为param未定义,所以我尝试 var param: [string] = [];
然后发生语法错误 .
[ts]类型'undefined []'不能分配给'[string]'类型 . 'undefined []'类型中缺少属性'0' .
我该如何解决这个问题?
提前致谢 .
2 回答
如果你真的想要一个元素元组,你需要分配它而不是使用push:
但这不允许您同时具有偏移和限制 . 你可能想要:
使用
.push()
时使用
var params: string[] = [];
使用语句var param: string[];
时,只声明其类型,params
未定义 .不要使用
var
.