этот вопрос приходит от How to push item to [string] in TypeScriptКак добавить элемент динамически к кортежу в 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 необходимо установить «пары» параметр как тип [string]
.
Таким образом, я объявил 'param' кортеж как [string]
.
Я хочу изменить динамический кортеж options['limit']
и options['offset']
значение.
Но param.push(String(limit));
терпит неудачу, потому что параметр undefined, поэтому я попробовал var param: [string] = [];
, тогда произошла синтаксическая ошибка.
[ts] Тип 'undefined []' не присваивается типу '[string]'. Свойство '0' отсутствует в типе 'undefined []'.
Как решить эту проблему?
Заранее спасибо.
спасибо. Мне нужно использовать тип [string], потому что дизайн функции плагина и динамическое добавление элемента tuple зависит от количества параметров. ex) [10, 20], [10], [20] – tomo
Тогда это всего лишь массив, а не кортеж. Javascript не поддерживает кортежи. Машинопись обрабатывает определенные массивы как определенное количество элементов, только управляемое машинописным компилятором. Он предупредит вас, но это не помешает вам что-либо сделать. Если плагин говорит, что ему требуется _tuple_, это все равно только массив. Если вы используете этот плагин, просто передайте массив. Если вы его создаете, вы выбрали неверную структуру данных. – cdbajorin
спасибо за ваш ответ. теперь его очень ясно. – tomo