この質問はHow to push item to [string] in TypeScriptTypeScriptで項目を動的にタプルに追加するにはどうすればよいですか?
次のような機能を作りたいと思います。
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]
の型として設定する必要があります。
だから私は[string]
と 'param'タプルを宣言しました。
options['limit']
とoptions['offset']
の値で動的にparam tupleを変更したいとします。
ただし、paramが定義されていないのでparam.push(String(limit));
が失敗しましたので、var param: [string] = [];
を入力して構文エラーが発生しました。
[ts]タイプ 'undefined []'はタイプ '[string]'に割り当てられません。型 'undefined []'にプロパティ '0'がありません。
どのようにこの問題を解決できますか?
ありがとうございます。
ありがとう。私は[string]型を使う必要があります。なぜなら、プラグイン関数の設計は、オプションの数によってタプル項目を動的に追加するからです。例)[10、20]、[10]、[20] – tomo
それは単なる配列であり、タプルではありません。 Javascriptはタプルをサポートしていません。 Typescriptは特定の配列をtypescriptコンパイラによってのみ制御される指定された数の要素として扱います。それはあなたに警告しますが、あなたが何かをするのを妨げることはありません。プラグインが_tuple_を必要としていると言っても、まだ配列のままです。このプラグインを使用している場合は、配列を渡してください。あなたがそれを制作しているなら、あなたは間違ったデータ構造を選んでいます。あなたの答えは – cdbajorin
ありがとう。今は非常に明確です。 – tomo