@@ -77667,7 +77667,7 @@ <h2 id="solutions">Solutions</h2>
77667
77667
<!-- solution:start -->
77668
77668
77669
77669
<h3 id="solution-1">Solution 1</h3>
77670
- <div class="tabbed-set tabbed-alternate" data-tabs="1:1 "><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">TypeScript</label></div>
77670
+ <div class="tabbed-set tabbed-alternate" data-tabs="1:2 "><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" />< div class="tabbed-labels"><label for="__tabbed_1_1">TypeScript</label><label for="__tabbed_1_2">JavaScript </label></div>
77671
77671
<div class="tabbed-content">
77672
77672
<div class="tabbed-block">
77673
77673
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -77688,9 +77688,11 @@ <h3 id="solution-1">Solution 1</h3>
77688
77688
<span class="normal">16</span>
77689
77689
<span class="normal">17</span>
77690
77690
<span class="normal">18</span>
77691
- <span class="normal">19</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">once</span><span class="o"><</span><span class="nx">T</span><span class="w"> </span><span class="k">extends</span><span class="w"> </span><span class="p">(</span><span class="nx">...args</span><span class="o">:</span><span class="w"> </span><span class="kt">any</span><span class="p">[])</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="nx">any</span><span class="o">></span><span class="p">(</span>
77692
- <span class="w"> </span><span class="nx">fn</span><span class="o">:</span><span class="w"> </span><span class="kt">T</span><span class="p">,</span>
77693
- <span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="p">(</span><span class="nx">...args</span><span class="o">:</span><span class="w"> </span><span class="kt">Parameters</span><span class="o"><</span><span class="nx">T</span><span class="o">></span><span class="p">)</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="nx">ReturnType</span><span class="o"><</span><span class="nx">T</span><span class="o">></span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="kc">undefined</span><span class="w"> </span><span class="p">{</span>
77691
+ <span class="normal">19</span>
77692
+ <span class="normal">20</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kr">type</span><span class="w"> </span><span class="nx">JSONValue</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="nx">JSONValue</span><span class="p">[]</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">[</span><span class="nx">key</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="p">]</span><span class="o">:</span><span class="w"> </span><span class="nx">JSONValue</span><span class="w"> </span><span class="p">};</span>
77693
+ <span class="kr">type</span><span class="w"> </span><span class="nx">OnceFn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">...args</span><span class="o">:</span><span class="w"> </span><span class="kt">JSONValue</span><span class="p">[])</span><span class="w"> </span><span class="p">=></span><span class="w"> </span><span class="nx">JSONValue</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="kc">undefined</span><span class="p">;</span>
77694
+
77695
+ <span class="kd">function</span><span class="w"> </span><span class="nx">once</span><span class="p">(</span><span class="nx">fn</span><span class="o">:</span><span class="w"> </span><span class="kt">Function</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="nx">OnceFn</span><span class="w"> </span><span class="p">{</span>
77694
77696
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">called</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span>
77695
77697
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="p">(...</span><span class="nx">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
77696
77698
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="nx">called</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
@@ -77700,6 +77702,50 @@ <h3 id="solution-1">Solution 1</h3>
77700
77702
<span class="w"> </span><span class="p">};</span>
77701
77703
<span class="p">}</span>
77702
77704
77705
+ <span class="cm">/**</span>
77706
+ <span class="cm"> * let fn = (a,b,c) => (a + b + c)</span>
77707
+ <span class="cm"> * let onceFn = once(fn)</span>
77708
+ <span class="cm"> *</span>
77709
+ <span class="cm"> * onceFn(1,2,3); // 6</span>
77710
+ <span class="cm"> * onceFn(2,3,6); // returns undefined without calling fn</span>
77711
+ <span class="cm"> */</span>
77712
+ </code></pre></div></td></tr></table></div>
77713
+ </div>
77714
+ <div class="tabbed-block">
77715
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
77716
+ <span class="normal"> 2</span>
77717
+ <span class="normal"> 3</span>
77718
+ <span class="normal"> 4</span>
77719
+ <span class="normal"> 5</span>
77720
+ <span class="normal"> 6</span>
77721
+ <span class="normal"> 7</span>
77722
+ <span class="normal"> 8</span>
77723
+ <span class="normal"> 9</span>
77724
+ <span class="normal">10</span>
77725
+ <span class="normal">11</span>
77726
+ <span class="normal">12</span>
77727
+ <span class="normal">13</span>
77728
+ <span class="normal">14</span>
77729
+ <span class="normal">15</span>
77730
+ <span class="normal">16</span>
77731
+ <span class="normal">17</span>
77732
+ <span class="normal">18</span>
77733
+ <span class="normal">19</span>
77734
+ <span class="normal">20</span>
77735
+ <span class="normal">21</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="cm">/**</span>
77736
+ <span class="cm"> * @param {Function} fn</span>
77737
+ <span class="cm"> * @return {Function}</span>
77738
+ <span class="cm"> */</span>
77739
+ <span class="kd">var</span><span class="w"> </span><span class="nx">once</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="p">(</span><span class="nx">fn</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
77740
+ <span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">called</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span>
77741
+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="p">(...</span><span class="nx">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
77742
+ <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="nx">called</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
77743
+ <span class="w"> </span><span class="nx">called</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span>
77744
+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">fn</span><span class="p">(...</span><span class="nx">args</span><span class="p">);</span>
77745
+ <span class="w"> </span><span class="p">}</span>
77746
+ <span class="w"> </span><span class="p">};</span>
77747
+ <span class="p">};</span>
77748
+
77703
77749
<span class="cm">/**</span>
77704
77750
<span class="cm"> * let fn = (a,b,c) => (a + b + c)</span>
77705
77751
<span class="cm"> * let onceFn = once(fn)</span>
@@ -77742,6 +77788,11 @@ <h3 id="solution-1">Solution 1</h3>
77742
77788
77743
77789
<nav>
77744
77790
77791
+ <a href="https://github.com/AE-Hertz" class="md-author" title="@AE-Hertz">
77792
+
77793
+ <img src="https://avatars.githubusercontent.com/u/93651229?v=4&size=72" alt="AE-Hertz">
77794
+ </a>
77795
+
77745
77796
<a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
77746
77797
77747
77798
<img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">
0 commit comments