私はスニペットでいくつかのコードを読んでいます:
_search(query: string) {
of(query).
pipe(
filter(Boolean),
debounceTime(300),
_
filter(Boolean)
は基本的にfilter(v=>!!v)
と同じですか?
はい、同じです。
console.log(typeof Boolean); // prints function
console.log(Boolean.prototype.constructor("truthy")); // prints true
console.log(Boolean === Boolean.prototype.constructor); // prints true
Boolean
グローバル参照は、最初の引数からブール値を返すコンストラクター関数を指します。
コンストラクターを使用してbooleanラッパーオブジェクトを作成できますが、プリミティブtrue値。
console.log(new Boolean("truthy")); // prints an object.
console.log(new Boolean("truthy").valueOf() === true); // prints true
console.log((new Boolean("truthy")) === true); // prints false
console.log(Boolean("truthy") === true); // prints true
リファレンス: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean
サブスクリプションで未定義の値を取得しないという点で、同じ結果が得られます。
違いは、filter(Boolean)を使用すると型推論が失われることです。
const query = 'the query';
of(query).
pipe(
filter(Boolean)
).subscribe(val); // val here is of type 'Any'
of(query).
pipe(
filter(Boolean)
).subscribe((val: String)); // we can infer it back to String later
of(query).
pipe(
filter(v=> v!== undefined)
).subscribe(val); // val here is of type 'String'