这个问题来自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函数&#39; param&#39;参数类型为[string]
。
所以我宣布了#param&#39;元组为[string]
。
我想通过options['limit']
和options['offset']
值动态更改参数元组。
但param.push(String(limit));
失败,因为param未定义,因此我尝试var param: [string] = [];
然后发生语法错误。
[ts]输入&#39; undefined []&#39;不能分配给&#39; [string]&#39;。财产&#39; 0&#39;缺少类型&#39; undefined []&#39;。
如何解决这个问题?
提前致谢。
答案 0 :(得分:1)
如果你真的想要一个元素元组,你只需要分配它而不是使用push:
let param: [string];
if (options['limit']) {
let limit = options['limit'];
query = query + " LIMIT ? ";
param = [String(limit)];
}
但这不允许你同时拥有偏移和限制。你可能想要:
let param: string[] = []
使用.push()
答案 1 :(得分:0)
使用var params: string[] = [];
使用语句var param: string[];
时,只声明其类型,params
未定义。
请勿使用var
。