2016-06-11 16 views
0

配列にラップされていない可変引数をTypescriptに含める方法はありますか?私が知っている唯一の構文は次のとおりです。本当にTypescriptの可変引数ですが、配列/リストはありません

protected log(...args: any[]): void 

問題ありませんが、時間がかかり、不要なクリックは結果です。 argsなどを渡す場合。 console.logに出力は、|> [Array[2]]のような折りたたみ可能な "オブジェクト"です。拡張された、不要なネストされたテキストとプロトタイプ情報があります。

v [Array[2]] 
    0:Array[2] 
     0:"Blah" 
    |> 1:input 
     length:2 
|> __proto__:Array[0] 
    length:1 
|> __proto__:Array[0] 

のようにあなたは完全にログを読むためにまたはエントリを検索するために、すべての単一のエントリをクリックする必要があります。 、それが可能であることを確認するために

a1:"123" 
a2:"123" 
a3:"123" 
b1:456 
b2:456 
b3:456 
c1:789 
c2:789 
c3:789 

:また、アルファベット順にソートされ

|> Object {a1: "123", b1: 456, c1: 789, a2: "123", b2: 456…} 

彼らは要約の種類と拡張バージョンを提供します。これは、実際の配列[1, 2, 3, 4, 5]またはオブジェクトの出力に比べて何の楽しみではありませんiterate引数メンバーに、またはreduce関数を使用します。しかし、より快適なロギングのための不必要なコードとロジックだけでなく、より高いコストでオーバーヘッドになるシームを出力します。

答えて

0

log(1); // 1 
log(1, 2, 3); // 1 2 3 
log([1, 2, 3]); // > [1, 2, 3] 
+0

使用するトリックは、一種の回避策になるように継ぎ目を適用しますが、外部ロガーを使用する場合は適用するためにパッチを適用する必要があります。 –

+0

回避策を必要としないか、フォーマッタを自分で実装する解決策が見つからない可能性があります。 –

+0

外部ロガーが呼び出すことができる関数を外部ロガーが公開していない場合、非常に奇妙なロガーです。 'apply'は' Function.prototype'のメソッドであり、使用しているロガーに関係なく利用できます。 –

0

いいえ、可変数の引数を受け入れるための代替構文はありません。これはあなたのブラウザ/コンソールがあまりにも多くの不必要な情報を出力しているように思えます。 Mine-chromeは大括弧で囲まれた値を出力します。

クイック何かをしたい場合は、単にこれを行うことができます。

console.log(JSON.stringify(args)); 

またはあなたの好みに合わせて配列を出力するための独自の関数を作成します。その後

function log() { 
    console.log.apply(console, arguments); 
} 

:あなたが何かを行うことができます配列の場合

+0

[OK]を文字列化がオプションではありませんが、出力は単一のコンソールでのラインと読みさえ困難です。現在はカスタム関数を使用して出力を準備しています。しかし、可能性のあるものがあれば、もっときれいで清潔になるはずです。 –

関連する問題