我想将项目添加到[string]。 但是以下代码在param.push语句中失败。
修改
declare var sqlitePlugin:any;
var query: string = `SELECT * 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));
}
sqlitePlugin.openDatabase({name: 'Items.db', key: 'Password', location: 'default'}, (db) => {
db.transaction((tx)=> {
tx.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.items.push(item);
}
callback(this.items);
} );
}
});
很抱歉问这个非常基本的问题,但我已经挣扎了2天.. 请给我任何提示或链接。
提前致谢。
答案 0 :(得分:5)
尝试:
var param: string[] = [];
Check this snippet out, it shows the desired result.
问题是您只是没有初始化变量param
,因此.push
不存在undefined
。
此外,您没有正确声明阵列(请参阅上面的差异)。有两种方法可以这样做,取自TypeScript的文档:
TypeScript与JavaScript一样,允许您使用值数组。 数组类型可以用两种方式之一编写。在第一个,你使用 元素的类型后跟[]表示其数组 元素类型:
let list: number[] = [1, 2, 3];
第二种方式使用通用数组类型Array:
let list: Array<number> = [1, 2, 3];
答案 1 :(得分:0)
您可以使用以下两种语法之一在typescript中定义字符串数组:
使用常规数组语法:
var param: string[] = [];
使用泛型语法:
var param: Array<string> = [];