mirror of
https://github.com/jaywcjlove/reference.git
synced 2025-06-17 12:41:20 +08:00
chore: add github workflows config. 49788a09b3
This commit is contained in:
241
docs/cron.html
Normal file
241
docs/cron.html
Normal file
@ -0,0 +1,241 @@
|
||||
<!doctype html>
|
||||
<html lang="en" data-color-mode="dark">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Cron 备忘清单
|
||||
& Quick Reference</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta description="Cron 最适合安排重复性任务。 可以使用关联的 at 实用程序来完成一次性任务的调度。为开发人员分享快速参考备忘单。">
|
||||
<meta keywords="Quick,Reference">
|
||||
<link rel="stylesheet" href="../style/style.css">
|
||||
</head>
|
||||
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em"><path opacity=".5" d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="white"></path><path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#cbd5e1"></path><path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#292D32"></path></svg><span class="title">Quick Reference</span></a><div class="menu"><a href="https://github.com/jaywcjlove/reference/blob/main/docs/cron.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="warp max-container"><header class="warp-header h1warp"><h1>Cron 备忘清单</h1><div class="warp-body">
|
||||
<p><a href="https://en.wikipedia.org/wiki/Cron">Cron</a> 最适合安排重复性任务。 可以使用关联的 at 实用程序来完成一次性任务的调度。</p>
|
||||
</div></header><div class="h1warp-body"><div class="warp"><div class="warp-header h2warp"><h2>Crontab 格式</h2><div class="warp-body"><!--rehype:body-class=cols-2-->
|
||||
</div></div><div class="h2warp-body cols-2"><div class="warp"><div class="warp-header h3warp"><h3>格式</h3><div class="warp-body">
|
||||
<pre><code class="code-highlight"><span class="code-line line-number" line="1">Min Hour Day Mon Weekday
|
||||
</span><span class="code-line line-number" line="2">分钟 小时 天 月 周
|
||||
</span></code></pre>
|
||||
<hr>
|
||||
<pre><code class="code-highlight"><span class="code-line line-number" line="1">* * * * * 要执行的命令
|
||||
</span><span class="code-line line-number" line="2">┬ ┬ ┬ ┬ ┬
|
||||
</span><span class="code-line line-number" line="3">│ │ │ │ └─ 星期几 (0=周日 .. 6=星期六)
|
||||
</span><span class="code-line line-number" line="4">│ │ │ └────── 月 (1..12)
|
||||
</span><span class="code-line line-number" line="5">│ │ └─────────── 月份中的某天 (1..31)
|
||||
</span><span class="code-line line-number" line="6">│ └──────────────── 小时 (0..23)
|
||||
</span><span class="code-line line-number" line="7">└───────────────────── 分钟 (0..59)
|
||||
</span></code></pre>
|
||||
<hr>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>字段</th>
|
||||
<th>范围</th>
|
||||
<th>特殊字符</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>分钟 Minute</td>
|
||||
<td>0 - 59</td>
|
||||
<td>, - * /</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>小时 Hour</td>
|
||||
<td>0 - 23</td>
|
||||
<td>, - * /</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>月份中的某天</td>
|
||||
<td>1 - 31</td>
|
||||
<td>, - * ? / L W</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>月 Month</td>
|
||||
<td>1 - 12</td>
|
||||
<td>, - * /</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>星期几</td>
|
||||
<td>0 - 6</td>
|
||||
<td>, - * ? / L #</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>示例</h3><div class="warp-body">
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Example</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>*/15 * * * *</code></td>
|
||||
<td>每 15 分钟</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>0 * * * *</code></td>
|
||||
<td>每隔一小时</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>0 */2 * * *</code></td>
|
||||
<td>每 2 小时</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>15 2 * * *</code></td>
|
||||
<td>每天凌晨 2 点 15 分</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>15 2 * * ?</code></td>
|
||||
<td>每天凌晨 2 点 15 分</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>10 9 * * 5</code></td>
|
||||
<td>每周五上午 9:10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>0 0 * * 0</code></td>
|
||||
<td>每个星期日的午夜</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>15 2 * * 1L</code></td>
|
||||
<td>每月最后一个星期一凌晨 2 点 15 分</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>15 0 * * 4#2</code></td>
|
||||
<td>每个月的第二个星期四早上 00:15</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>0 0 0 1 * *</code></td>
|
||||
<td>每个月的 1 日(每月)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>0 0 0 1 1 *</code></td>
|
||||
<td>每年 1 月 1 日(每年)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>@reboot</code></td>
|
||||
<td>每次重启 <em>(非标准)</em></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>特殊字符串</h3><div class="warp-body">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>特殊字符串</th>
|
||||
<th>意义</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>@reboot</td>
|
||||
<td>运行一次,在系统启动时 <em>(非标准)</em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@yearly</td>
|
||||
<td>每年运行一次,“0 0 1 1 *” <em>(非标准)</em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@annually</td>
|
||||
<td>(与@yearly 相同)<em>(非标准)</em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@monthly</td>
|
||||
<td>每月运行一次,“0 0 1 * *” <em>(非标准)</em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@weekly</td>
|
||||
<td>每周运行一次,“0 0 * * 0” <em>(非标准)</em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@daily</td>
|
||||
<td>每天运行一次,“0 0 * * *” <em>(非标准)</em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@midnight</td>
|
||||
<td>(与@daily 相同)<em>(非标准)</em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@hourly</td>
|
||||
<td>每小时运行一次,“0 * * * *” <em>(非标准)</em></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Crontab 命令</h3><div class="warp-body">
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>-</th>
|
||||
<th>-</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>crontab -e</code></td>
|
||||
<td>如果不存在,则编辑或创建一个 crontab 文件。</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>crontab -l</code></td>
|
||||
<td>显示 crontab 文件。</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>crontab -r</code></td>
|
||||
<td>删除 crontab 文件。</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>crontab -v</code></td>
|
||||
<td>显示您上次编辑 crontab 文件的时间。 <em>(非标准)</em></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div><div class="warp col-span-2"><div class="warp-header h3warp"><h3>特殊字符</h3><div class="warp-body"><!--rehype:warp-class=col-span-2--><!--rehype:-->
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>特殊字符</th>
|
||||
<th>说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Asterik(*)</code></td>
|
||||
<td>匹配字段中的所有值或任何可能的值。</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Hyphen(-)</code></td>
|
||||
<td>用于定义范围。例如:第 5 个字段(星期几)中的 1-5 每个工作日,即星期一到星期五</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Slash (/)</code></td>
|
||||
<td>第一个字段(分钟)/15 表示每十五分钟或范围的增量。</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Comma (,)</code></td>
|
||||
<td>用于分隔项目。例如:第二个字段(小时)中的 2、6、8 在凌晨 2 点、早上 6 点和早上 8 点执行</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>L</code></td>
|
||||
<td>仅允许用于 <code>月份中的某天</code> 或 <code>星期几</code> 字段,<code>星期几</code> 中的 <code>2L</code> 表示每个月的最后一个星期二</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Hash (#)</code></td>
|
||||
<td>仅允许用于 <code>星期几</code> 字段,后面必须在 1 到 5 的范围内。例如,<code>4#1</code> 表示给定月份的“第一个星期四”。</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Question mark (?)</code></td>
|
||||
<td>可以代替“*”并允许用于月份和星期几。使用仅限于 cron 表达式中的 <code>月份中的某天</code> 或 <code>星期几</code>。</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>Also see</h2><div class="warp-body">
|
||||
<ul>
|
||||
<li><a href="https://devhints.io/cron">Devhints</a> <em>(devhints.io)</em></li>
|
||||
<li><a href="https://crontab-generator.org/">Crontab Generator</a> <em>(crontab-generator.org)</em></li>
|
||||
<li><a href="https://crontab.guru/">Crontab guru</a> <em>(crontab.guru)</em></li>
|
||||
</ul>
|
||||
|
||||
</div></div></div></div></div><footer class="footer-warp"><footer class="max-container">© 2022 Kenny Wang, All rights reserved.</footer></footer></body>
|
||||
</html>
|
311
docs/git.html
Normal file
311
docs/git.html
Normal file
@ -0,0 +1,311 @@
|
||||
<!doctype html>
|
||||
<html lang="en" data-color-mode="dark">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Git 备忘清单
|
||||
& Quick Reference</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta description="本备忘单总结了常用的 Git 命令行指令,以供快速参考。为开发人员分享快速参考备忘单。">
|
||||
<meta keywords="Quick,Reference">
|
||||
<link rel="stylesheet" href="../style/style.css">
|
||||
</head>
|
||||
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em"><path opacity=".5" d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="white"></path><path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#cbd5e1"></path><path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#292D32"></path></svg><span class="title">Quick Reference</span></a><div class="menu"><a href="https://github.com/jaywcjlove/reference/blob/main/docs/git.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="warp max-container"><header class="warp-header h1warp"><h1>Git 备忘清单</h1><div class="warp-body">
|
||||
<p>本备忘单总结了常用的 Git 命令行指令,以供快速参考。</p>
|
||||
</div></header><div class="h1warp-body"><div class="warp"><div class="warp-header h2warp"><h2>入门</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>创建存储库</h3><div class="warp-body">
|
||||
<p>创建一个新的本地存储库</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> init <span class="token punctuation">[</span>project name<span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
<p>克隆存储库</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> clone git_url
|
||||
</span></code></pre>
|
||||
<p>将存储库克隆到指定目录</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> clone git_url 指定目录
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp row-span-2"><div class="warp-header h3warp"><h3>做出改变</h3><div class="warp-body"><!--rehype:warp-class=row-span-2--><!--rehype:-->
|
||||
<p>在工作目录中<strong>显示</strong>修改后的文件,为您的下一次提交暂存</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> status
|
||||
</span></code></pre>
|
||||
<p>暂存文件,准备提交</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> <span class="token function">add</span> <span class="token punctuation">[</span>file<span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
<p>暂存<strong>所有</strong>更改的文件,准备提交</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> <span class="token function">add</span> <span class="token builtin class-name">.</span>
|
||||
</span></code></pre>
|
||||
<p>将所有暂存文件提交到版本化历史记录</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> commit <span class="token parameter variable">-m</span> <span class="token string">"commit message"</span>
|
||||
</span></code></pre>
|
||||
<p>将所有跟踪的文件提交到版本化历史记录</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> commit <span class="token parameter variable">-am</span> <span class="token string">"commit message"</span>
|
||||
</span></code></pre>
|
||||
<p>取消暂存文件,保留文件更改</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> reset <span class="token punctuation">[</span>file<span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
<p>将所有内容恢复到最后一次提交</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> reset <span class="token parameter variable">--hard</span>
|
||||
</span></code></pre>
|
||||
<p>已更改但未暂存内容的差异</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> <span class="token function">diff</span>
|
||||
</span></code></pre>
|
||||
<p>已 commited 但尚未提交的内容的差异</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> <span class="token function">diff</span> <span class="token parameter variable">--staged</span>
|
||||
</span></code></pre>
|
||||
<p>在指定分支之前应用当前分支的任何提交</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> rebase <span class="token punctuation">[</span>branch<span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>配置</h3><div class="warp-body">
|
||||
<p>设置将附加到您的提交和标签的名称</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> config <span class="token parameter variable">--global</span> user.name <span class="token string">"name"</span>
|
||||
</span></code></pre>
|
||||
<p>设置将附加到您的提交和标签 tags 的<strong>电子邮件地址</strong></p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> config <span class="token parameter variable">--global</span> user.email <span class="token string">"email"</span>
|
||||
</span></code></pre>
|
||||
<p>启用 Git 输出的一些着色</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> config <span class="token parameter variable">--global</span> color.ui auto
|
||||
</span></code></pre>
|
||||
<p>在文本编辑器中编辑全局配置文件</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> config <span class="token parameter variable">--global</span> <span class="token parameter variable">--edit</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>使用分支</h3><div class="warp-body">
|
||||
<p>列出所有本地分支</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> branch
|
||||
</span></code></pre>
|
||||
<p>列出所有分支,本地和远程</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> branch <span class="token parameter variable">-av</span>
|
||||
</span></code></pre>
|
||||
<p>切换到 my_branch,并更新工作目录</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> checkout my_branch
|
||||
</span></code></pre>
|
||||
<p>创建一个名为 new_branch 的新分支</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> checkout <span class="token parameter variable">-b</span> new_branch
|
||||
</span></code></pre>
|
||||
<p>删除名为 my_branch 的分支</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> branch <span class="token parameter variable">-d</span> my_branch
|
||||
</span></code></pre>
|
||||
<p>将分支 A 合并到分支 B</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> checkout branchB
|
||||
</span><span class="code-line line-number" line="2">$ <span class="token function">git</span> merge branchA
|
||||
</span></code></pre>
|
||||
<p>标记当前提交</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> tag my_tag
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>观察你的存储库</h3><div class="warp-body">
|
||||
<p>显示当前活动分支的提交历史</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> log
|
||||
</span></code></pre>
|
||||
<p>显示 branchA 上不在 branchB 上的提交</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> log branchB<span class="token punctuation">..</span>branchA
|
||||
</span></code></pre>
|
||||
<p>显示更改文件的提交,即使跨重命名</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> log <span class="token parameter variable">--follow</span> <span class="token punctuation">[</span>file<span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
<p>显示 branchA 中的内容与 branchB 中的内容的差异</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> <span class="token function">diff</span> branchB<span class="token punctuation">..</span>.branchA
|
||||
</span></code></pre>
|
||||
<p>以人类可读的格式显示 Git 中的任何对象</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> show <span class="token punctuation">[</span>SHA<span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>同步</h3><div class="warp-body">
|
||||
<p>从该 Git 远程获取所有分支</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> fetch <span class="token punctuation">[</span>alias<span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
<p>将远程分支合并到当前分支以使其保持最新状态</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> merge <span class="token punctuation">[</span>alias<span class="token punctuation">]</span>/<span class="token punctuation">[</span>branch<span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment"># 没有快进</span>
|
||||
</span><span class="code-line line-number" line="3">$ <span class="token function">git</span> merge --no-ff <span class="token punctuation">[</span>alias<span class="token punctuation">]</span>/<span class="token punctuation">[</span>branch<span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment"># 仅快进</span>
|
||||
</span><span class="code-line line-number" line="5">$ <span class="token function">git</span> merge --ff-only <span class="token punctuation">[</span>alias<span class="token punctuation">]</span>/<span class="token punctuation">[</span>branch<span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
<p>将本地分支提交传输到远程存储库分支</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> push <span class="token punctuation">[</span>alias<span class="token punctuation">]</span> <span class="token punctuation">[</span>branch<span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
<p>从跟踪远程分支获取并合并任何提交</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> pull
|
||||
</span></code></pre>
|
||||
<p>将另一个分支的一个特定提交合并到当前分支</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> cherry-pick <span class="token punctuation">[</span>commit_id<span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>远程</h3><div class="warp-body">
|
||||
<p>添加一个 git URL 作为别名</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> remote <span class="token function">add</span> <span class="token punctuation">[</span>alias<span class="token punctuation">]</span> <span class="token punctuation">[</span>url<span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
<p>显示您设置的远程存储库的名称</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> remote
|
||||
</span></code></pre>
|
||||
<p>显示远程存储库的名称和 URL</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> remote <span class="token parameter variable">-v</span>
|
||||
</span></code></pre>
|
||||
<p>删除远程存储库</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> remote <span class="token function">rm</span> <span class="token punctuation">[</span>remote repo name<span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
<p>更改 git repo 的 URL</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> remote set-url origin <span class="token punctuation">[</span>git_url<span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>临时提交</h3><div class="warp-body">
|
||||
<p>保存已修改和分阶段的更改</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> stash
|
||||
</span></code></pre>
|
||||
<p>列出隐藏文件更改的堆栈顺序</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> stash list
|
||||
</span></code></pre>
|
||||
<p>从存储堆栈顶部编写工作</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> stash pop
|
||||
</span></code></pre>
|
||||
<p>丢弃存储堆栈顶部的更改</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> stash drop
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>跟踪路径更改</h3><div class="warp-body">
|
||||
<p>从项目中删除文件并暂存删除以进行提交</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> <span class="token function">rm</span> <span class="token punctuation">[</span>file<span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
<p>更改现有文件路径并暂存移动</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> <span class="token function">mv</span> <span class="token punctuation">[</span>existing-path<span class="token punctuation">]</span> <span class="token punctuation">[</span>new-path<span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
<p>显示所有提交日志,并指示任何移动的路径</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> log <span class="token parameter variable">--stat</span> <span class="token parameter variable">-M</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>忽略文件</h3><div class="warp-body">
|
||||
<pre class="language-gitignore"><code class="language-gitignore code-highlight"><span class="code-line line-number" line="1"><span class="token entry string"><span class="token punctuation">/</span>logs<span class="token punctuation">/</span><span class="token operator">*</span></span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment"># “!” 意思是不要忽视</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token entry string"><span class="token operator">!</span>logs<span class="token punctuation">/</span>.gitkeep</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment"># 忽略 Mac 系统文件</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token entry string">.DS_store</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token comment"># 忽略 node_modules 文件夹</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token entry string">node_modules</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token comment"># 忽略 SASS 配置文件</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token entry string">.sass-cache</span>
|
||||
</span></code></pre>
|
||||
<p><code>.gitignore</code> 文件指定了 Git 应该忽略的未跟踪的文件</p>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>Git 技巧</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>重命名分支</h3><div class="warp-body">
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4><strong>重命名</strong>为<code>new</code></h4><div class="warp-body">
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> branch <span class="token parameter variable">-m</span> <span class="token operator"><</span>new<span class="token operator">></span>
|
||||
</span><span class="code-line line-number" line="2">$ <span class="token function">git</span> branch <span class="token parameter variable">-m</span> <span class="token operator"><</span>old<span class="token operator">></span> <span class="token operator"><</span>new<span class="token operator">></span> <span class="token comment"># 重命名分支 </span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h4warp"><h4><strong>推送</strong>并重置</h4><div class="warp-body">
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> push origin <span class="token parameter variable">-u</span> <span class="token operator"><</span>new<span class="token operator">></span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h4warp"><h4><strong>删除</strong>远程分支</h4><div class="warp-body">
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> push origin <span class="token parameter variable">--delete</span> <span class="token operator"><</span>old<span class="token operator">></span> <span class="token comment"># 方法1</span>
|
||||
</span><span class="code-line line-number" line="2">$ <span class="token function">git</span> push origin :oldBranchName <span class="token comment"># 方法2</span>
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Log</h3><div class="warp-body">
|
||||
<p>按内容搜索更改</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> log -S<span class="token string">'<a term in the source>'</span>
|
||||
</span></code></pre>
|
||||
<p>显示特定文件随时间的变化</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> log <span class="token parameter variable">-p</span> <span class="token operator"><</span>file_name<span class="token operator">></span>
|
||||
</span></code></pre>
|
||||
<p>打印出很酷的日志可视化</p>
|
||||
<pre class="wrap"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> log <span class="token parameter variable">--pretty</span><span class="token operator">=</span>oneline <span class="token parameter variable">--graph</span> <span class="token parameter variable">--decorate</span> <span class="token parameter variable">--all</span>
|
||||
</span></code></pre><!--rehype:className=wrap-->
|
||||
</div></div></div><div class="warp row-span-2"><div class="warp-header h3warp"><h3>分支</h3><div class="warp-body"><!--rehype:warp-class=row-span-2-->
|
||||
<p>列出所有分支及其上游</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> branch <span class="token parameter variable">-vv</span>
|
||||
</span></code></pre>
|
||||
<p>快速切换到上一个分支</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> checkout -
|
||||
</span></code></pre>
|
||||
<p>只获取远程分支</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> branch <span class="token parameter variable">-r</span>
|
||||
</span></code></pre>
|
||||
<p>从另一个分支签出单个文件</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> checkout <span class="token operator"><</span>branch<span class="token operator">></span> -- <span class="token operator"><</span>file<span class="token operator">></span>
|
||||
</span></code></pre>
|
||||
<p>删除本地存在远程不存在的分支</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1"><span class="token function">git</span> remote prune origin
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Commit</h3><div class="warp-body">
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> commit <span class="token parameter variable">-v</span> <span class="token parameter variable">--amend</span>
|
||||
</span></code></pre>
|
||||
<p>重写最后的提交信息</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>忽略文件的权限变化</h3><div class="warp-body">
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1"><span class="token function">git</span> config core.fileMode <span class="token boolean">false</span>
|
||||
</span></code></pre>
|
||||
<p>不再将文件的权限变化视作改动</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Git 别名</h3><div class="warp-body">
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> config <span class="token parameter variable">--global</span> alias.co checkout
|
||||
</span><span class="code-line line-number" line="2">$ <span class="token function">git</span> config <span class="token parameter variable">--global</span> alias.br branch
|
||||
</span><span class="code-line line-number" line="3">$ <span class="token function">git</span> config <span class="token parameter variable">--global</span> alias.ci commit
|
||||
</span><span class="code-line line-number" line="4">$ <span class="token function">git</span> config <span class="token parameter variable">--global</span> alias.st status
|
||||
</span></code></pre>
|
||||
<p>也可以看看:<a href="https://gist.github.com/johnpolacek/69604a1f6861129ef088">More Aliases</a></p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>设置大小写敏感</h3><div class="warp-body">
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1"><span class="token comment"># 查看git 的设置</span>
|
||||
</span><span class="code-line line-number" line="2">$ <span class="token function">git</span> config <span class="token parameter variable">--get</span> core.ignorecase
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment"># 设置大小写敏感</span>
|
||||
</span><span class="code-line line-number" line="4">$ <span class="token function">git</span> config core.ignorecase <span class="token boolean">false</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token comment"># 远程有俩相同目录,通过这种方式清除掉,然后提交记录</span>
|
||||
</span><span class="code-line line-number" line="6">$ <span class="token function">git</span> <span class="token function">rm</span> <span class="token parameter variable">-r</span> <span class="token parameter variable">--cached</span> <span class="token operator"><</span>目录/文件<span class="token operator">></span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp row-span-4"><div class="warp-header h3warp"><h3>修改远程 Commit 记录</h3><div class="warp-body"><!--rehype:warp-class=row-span-4--><!--rehype:-->
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> rebase <span class="token parameter variable">-i</span> HEAD~3
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment"># 表示要修改当前版本的倒数第三次状态</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment"># 将要更改的记录行首单词 pick 改为 edit</span>
|
||||
</span><span class="code-line line-number" line="4">pick 96dc3f9 提交 commit 描述内容 <span class="token number">1</span>
|
||||
</span><span class="code-line line-number" line="5">pick f1cce8a 提交 commit 描述内容 <span class="token number">2</span>
|
||||
</span><span class="code-line line-number" line="6">pick <span class="token number">6293516</span> 提交 commit 描述内容 <span class="token number">3</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token comment"># Rebase eeb03a4..6293516 onto eeb03a4 </span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token comment"># (3 commands)</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token comment">#</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token comment"># Commands:</span>
|
||||
</span><span class="code-line line-number" line="11"><span class="token comment"># p, pick = 使用提交</span>
|
||||
</span><span class="code-line line-number" line="12"><span class="token comment"># r, reword = 使用提交,但编辑提交消息</span>
|
||||
</span><span class="code-line line-number" line="13"><span class="token comment"># e, edit = 使用提交,但停止修改</span>
|
||||
</span><span class="code-line line-number" line="14"><span class="token comment"># s, squash = 使用提交,但融合到先前的提交中</span>
|
||||
</span><span class="code-line line-number" line="15"><span class="token comment"># f, fixup = 像 squash,但丢弃此提交的日志消息</span>
|
||||
</span><span class="code-line line-number" line="16"><span class="token comment"># x, exec = 使用 shell 运行命令(该行的其余部分)</span>
|
||||
</span><span class="code-line line-number" line="17"><span class="token comment"># d, drop = 删除提交</span>
|
||||
</span></code></pre>
|
||||
<p>保存并退出,会弹出下面提示</p>
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1"><span class="token comment"># 您现在可以修改提交,使用</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment"># </span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment"># git commit --amend</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment"># </span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token comment"># 对更改感到满意后,运行</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token comment"># </span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token comment"># git rebase --continue</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token comment">#</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token comment"># 1. 通过这条命令进入编辑更改 commit,保存退出</span>
|
||||
</span><span class="code-line line-number" line="10">$ <span class="token function">git</span> commit <span class="token parameter variable">--amend</span>
|
||||
</span><span class="code-line line-number" line="11"><span class="token comment"># 2. 保存退出确认修改,继续执行下面命令, </span>
|
||||
</span><span class="code-line line-number" line="12">$ <span class="token function">git</span> rebase <span class="token parameter variable">--continue</span>
|
||||
</span><span class="code-line line-number" line="13"><span class="token comment"># 如果修改多条记录反复执行上面两条命令直到完成所有修改</span>
|
||||
</span><span class="code-line line-number" line="14">
|
||||
</span><span class="code-line line-number" line="15"><span class="token comment"># 最后,确保没有人提交进行推送,最好不要加 -f 强制推送</span>
|
||||
</span><span class="code-line line-number" line="16">$ <span class="token function">git</span> push <span class="token parameter variable">-f</span> origin master
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>撤销远程记录</h3><div class="warp-body">
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1"><span class="token comment"># 撤销一条记录 </span>
|
||||
</span><span class="code-line line-number" line="2">$ <span class="token function">git</span> reset <span class="token parameter variable">--hard</span> HEAD~1
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment"># 强制同步到远程仓库 </span>
|
||||
</span><span class="code-line line-number" line="4">$ <span class="token function">git</span> push <span class="token parameter variable">-f</span> origin HEAD:master
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>放弃本地修改内容</h3><div class="warp-body">
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1"><span class="token comment"># 如果有的修改以及加入暂存区的话</span>
|
||||
</span><span class="code-line line-number" line="2">$ <span class="token function">git</span> reset <span class="token parameter variable">--hard</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment"># 还原所有修改,不会删除新增的文件</span>
|
||||
</span><span class="code-line line-number" line="4">$ <span class="token function">git</span> checkout <span class="token builtin class-name">.</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token comment"># 下面命令会删除新增的文件</span>
|
||||
</span><span class="code-line line-number" line="6">$ <span class="token function">git</span> clean <span class="token parameter variable">-xdf</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>获取最近一次提交的 Hash</h3><div class="warp-body">
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> rev-parse HEAD <span class="token comment"># e10721cb8859b2c</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment"># 获取短 hash</span>
|
||||
</span><span class="code-line line-number" line="3">$ <span class="token function">git</span> rev-parse <span class="token parameter variable">--short</span> HEAD <span class="token comment"># e10721c</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>删除已经合并到 master 的分支</h3><div class="warp-body">
|
||||
<pre class="wrap"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> branch <span class="token parameter variable">--merged</span> master <span class="token operator">|</span> <span class="token function">grep</span> <span class="token parameter variable">-v</span> <span class="token string">'^\*\| master'</span> <span class="token operator">|</span> <span class="token function">xargs</span> <span class="token parameter variable">-n</span> <span class="token number">1</span> <span class="token function">git</span> branch <span class="token parameter variable">-d</span>
|
||||
</span></code></pre><!--rehype:className=wrap-->
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>中文乱码的解决方案</h3><div class="warp-body">
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1">$ <span class="token function">git</span> config <span class="token parameter variable">--global</span> core.quotepath <span class="token boolean">false</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>把 A 分支的某一个 commit,放到 B 分支上</h3><div class="warp-body">
|
||||
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line line-number" line="1"><span class="token comment"># 切换到 B 分支</span>
|
||||
</span><span class="code-line line-number" line="2">$ <span class="token function">git</span> checkout <span class="token operator"><</span>B<span class="token operator">></span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment"># 将 A 分支 <hash-id> 的内容 pick 到 B 分支</span>
|
||||
</span><span class="code-line line-number" line="4">$ <span class="token function">git</span> cherry-pick <span class="token operator"><</span>hash-id<span class="token operator">></span>
|
||||
</span></code></pre>
|
||||
|
||||
</div></div></div></div></div></div></div><footer class="footer-warp"><footer class="max-container">© 2022 Kenny Wang, All rights reserved.</footer></footer></body>
|
||||
</html>
|
1260
docs/javascript.html
Normal file
1260
docs/javascript.html
Normal file
File diff suppressed because it is too large
Load Diff
520
docs/jest.html
Normal file
520
docs/jest.html
Normal file
@ -0,0 +1,520 @@
|
||||
<!doctype html>
|
||||
<html lang="en" data-color-mode="dark">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Jest 备忘清单
|
||||
& Quick Reference</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta description="Jest 是一款优雅、简洁的 JavaScript 测试框架。为开发人员分享快速参考备忘单。">
|
||||
<meta keywords="Quick,Reference">
|
||||
<link rel="stylesheet" href="../style/style.css">
|
||||
</head>
|
||||
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em"><path opacity=".5" d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="white"></path><path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#cbd5e1"></path><path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#292D32"></path></svg><span class="title">Quick Reference</span></a><div class="menu"><a href="https://github.com/jaywcjlove/reference/blob/main/docs/jest.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="warp max-container"><header class="warp-header h1warp"><h1>Jest 备忘清单</h1><div class="warp-body">
|
||||
<p>Jest 是一款优雅、简洁的 JavaScript 测试框架。</p>
|
||||
</div></header><div class="h1warp-body"><div class="warp"><div class="warp-header h2warp"><h2>入门</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>介绍</h3><div class="warp-body">
|
||||
<p><a href="https://jestjs.io/">Jest</a> 是一款优雅、简洁的 JavaScript 测试框架。</p>
|
||||
<ul>
|
||||
<li>无需配置,大多数 JS 项目中即装即用,无需配置</li>
|
||||
<li>优秀接口,从 it 到 expect - Jest 将工具包整合在一处。文档齐全、不断维护,非常不错。</li>
|
||||
<li>隔离的,并行进行测试,发挥每一丝算力。</li>
|
||||
<li>快照, 轻松编写持续追踪大型对象的测试,并在测试旁或代码内显示实时快照。</li>
|
||||
<li>代码覆盖, 无需其他操作,您仅需添加 --coverage 参数来生成代码覆盖率报告。</li>
|
||||
</ul>
|
||||
</div></div></div><div class="warp col-span-2"><div class="warp-header h3warp"><h3>测试结构</h3><div class="warp-body"><!--rehype:warp-class=col-span-2--><!--rehype:-->
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token function">describe</span><span class="token punctuation">(</span><span class="token string">'makePoniesPink'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token function">beforeAll</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token comment">/* 在所有测试之前运行 */</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token function">afterAll</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token comment">/* 在所有测试后运行 */</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token function">beforeEach</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token comment">/* 在每次测试之前运行 */</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token function">afterEach</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="12"> <span class="token comment">/* 每次测试后运行 */</span>
|
||||
</span><span class="code-line line-number" line="13"> <span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="14"> <span class="token function">test</span><span class="token punctuation">(</span><span class="token string">'make each pony pink'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="15"> <span class="token keyword">const</span> actual <span class="token operator">=</span> <span class="token function">fn</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token string">'Alice'</span><span class="token punctuation">,</span> <span class="token string">'Bob'</span><span class="token punctuation">,</span> <span class="token string">'Eve'</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="16"> <span class="token function">expect</span><span class="token punctuation">(</span>actual<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toEqual</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token string">'Pink Alice'</span><span class="token punctuation">,</span> <span class="token string">'Pink Bob'</span><span class="token punctuation">,</span> <span class="token string">'Pink Eve'</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="17"> <span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="18"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>匹配器</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>基本匹配器</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token number">42</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBe</span><span class="token punctuation">(</span><span class="token number">42</span><span class="token punctuation">)</span> <span class="token comment">// 严格相等 (===)</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token number">42</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token property-access">not</span><span class="token punctuation">.</span><span class="token method function property-access">toBe</span><span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">)</span> <span class="token comment">// 严格相等 (!==)</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toEqual</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment">// 深度相等</span>
|
||||
</span><span class="code-line line-number" line="4">
|
||||
</span><span class="code-line line-number" line="5"><span class="token comment">// 深度相等</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">a</span><span class="token operator">:</span> <span class="token keyword nil">undefined</span><span class="token punctuation">,</span> <span class="token literal-property property">b</span><span class="token operator">:</span> <span class="token number">2</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token punctuation">.</span><span class="token method function property-access">toEqual</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">b</span><span class="token operator">:</span> <span class="token number">2</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="8">
|
||||
</span><span class="code-line line-number" line="9"><span class="token comment">// 严格相等 (Jest 23+)</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">a</span><span class="token operator">:</span> <span class="token keyword nil">undefined</span><span class="token punctuation">,</span> <span class="token literal-property property">b</span><span class="token operator">:</span> <span class="token number">2</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token punctuation">.</span><span class="token property-access">not</span><span class="token punctuation">.</span><span class="token method function property-access">toStrictEqual</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">b</span><span class="token operator">:</span> <span class="token number">2</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p><a href="http://jestjs.io/docs/en/using-matchers">Using matchers</a>, <a href="https://jestjs.io/docs/en/expect">matchers docs</a></p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>真实性</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token comment">// 匹配 if 语句视为 true 的任何内容</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment">// (not false、0、''、null、undefined、NaN)</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token string">'foo'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBeTruthy</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment">// 匹配 if 语句视为 false 的任何内容</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token comment">// (false、0、''、null、undefined、NaN)</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token string">''</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBeFalsy</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token comment">// 仅匹配 null</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token keyword null nil">null</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBeNull</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token comment">// 仅匹配未定义</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token keyword nil">undefined</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBeUndefined</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="11"><span class="token comment">// toBeUndefined 的反义词</span>
|
||||
</span><span class="code-line line-number" line="12"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token number">7</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBeDefined</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="13"><span class="token comment">// 匹配真假</span>
|
||||
</span><span class="code-line line-number" line="14"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toEqual</span><span class="token punctuation">(</span>expect<span class="token punctuation">.</span><span class="token method function property-access">any</span><span class="token punctuation">(</span><span class="token known-class-name class-name">Boolean</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>数字</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token comment">// 大于</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBeGreaterThan</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment">// 大于或等于</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBeGreaterThanOrEqual</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token comment">// 小于</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBeLessThan</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token comment">// 小于或等于</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBeLessThanOrEqual</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token comment">// 接近于</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token number">0.2</span> <span class="token operator">+</span> <span class="token number">0.1</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBeCloseTo</span><span class="token punctuation">(</span><span class="token number">0.3</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="11"><span class="token comment">// 原始值的传递类型</span>
|
||||
</span><span class="code-line line-number" line="12"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token number">NaN</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toEqual</span><span class="token punctuation">(</span>expect<span class="token punctuation">.</span><span class="token method function property-access">any</span><span class="token punctuation">(</span><span class="token known-class-name class-name">Number</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>字符串</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token comment">// 检查字符串是否与正则表达式匹配。</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token string">'long string'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toMatch</span><span class="token punctuation">(</span><span class="token string">'str'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token string">'string'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toEqual</span><span class="token punctuation">(</span>expect<span class="token punctuation">.</span><span class="token method function property-access">any</span><span class="token punctuation">(</span><span class="token known-class-name class-name">String</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token string">'coffee'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toMatch</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">ff</span><span class="token regex-delimiter">/</span></span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token string">'pizza'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token property-access">not</span><span class="token punctuation">.</span><span class="token method function property-access">toMatch</span><span class="token punctuation">(</span><span class="token string">'coffee'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token string">'pizza'</span><span class="token punctuation">,</span> <span class="token string">'coffee'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toEqual</span><span class="token punctuation">(</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token punctuation">[</span>
|
||||
</span><span class="code-line line-number" line="8"> expect<span class="token punctuation">.</span><span class="token method function property-access">stringContaining</span><span class="token punctuation">(</span><span class="token string">'zz'</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="9"> expect<span class="token punctuation">.</span><span class="token method function property-access">stringMatching</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">ff</span><span class="token regex-delimiter">/</span></span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="11"><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>数组</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toEqual</span><span class="token punctuation">(</span>expect<span class="token punctuation">.</span><span class="token method function property-access">any</span><span class="token punctuation">(</span><span class="token known-class-name class-name">Array</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">const</span> exampleArray <span class="token operator">=</span> <span class="token punctuation">[</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token string">'Alice'</span><span class="token punctuation">,</span> <span class="token string">'Bob'</span><span class="token punctuation">,</span> <span class="token string">'Eve'</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token function">expect</span><span class="token punctuation">(</span>exampleArray<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toHaveLength</span><span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token function">expect</span><span class="token punctuation">(</span>exampleArray<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toContain</span><span class="token punctuation">(</span><span class="token string">'Alice'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token function">expect</span><span class="token punctuation">(</span>exampleArray<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toEqual</span><span class="token punctuation">(</span>
|
||||
</span><span class="code-line line-number" line="8"> expect<span class="token punctuation">.</span><span class="token method function property-access">arrayContaining</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token string">'Alice'</span><span class="token punctuation">,</span> <span class="token string">'Bob'</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token literal-property property">a</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">a</span><span class="token operator">:</span> <span class="token number">2</span> <span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token punctuation">.</span><span class="token method function property-access">toContainEqual</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">a</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token comment">// 包含相等</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>对象</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">a</span><span class="token operator">:</span><span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toHaveProperty</span><span class="token punctuation">(</span><span class="token string">'a'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">a</span><span class="token operator">:</span><span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toHaveProperty</span><span class="token punctuation">(</span><span class="token string">'a'</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">a</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token literal-property property">b</span><span class="token operator">:</span><span class="token number">1</span><span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toHaveProperty</span><span class="token punctuation">(</span><span class="token string">'a.b'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">a</span><span class="token operator">:</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token literal-property property">b</span><span class="token operator">:</span><span class="token number">2</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toMatchObject</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token literal-property property">a</span><span class="token operator">:</span><span class="token number">1</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">a</span><span class="token operator">:</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token literal-property property">b</span><span class="token operator">:</span><span class="token number">2</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toMatchObject</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token literal-property property">a</span><span class="token operator">:</span> expect<span class="token punctuation">.</span><span class="token method function property-access">any</span><span class="token punctuation">(</span><span class="token known-class-name class-name">Number</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token literal-property property">b</span><span class="token operator">:</span> expect<span class="token punctuation">.</span><span class="token method function property-access">any</span><span class="token punctuation">(</span><span class="token known-class-name class-name">Number</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token literal-property property">a</span><span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">b</span><span class="token operator">:</span> <span class="token number">2</span> <span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toEqual</span><span class="token punctuation">(</span><span class="token punctuation">[</span>
|
||||
</span><span class="code-line line-number" line="10"> expect<span class="token punctuation">.</span><span class="token method function property-access">objectContaining</span><span class="token punctuation">(</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token punctuation">{</span> <span class="token literal-property property">a</span><span class="token operator">:</span> expect<span class="token punctuation">.</span><span class="token method function property-access">any</span><span class="token punctuation">(</span><span class="token known-class-name class-name">Number</span><span class="token punctuation">)</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="12"> <span class="token punctuation">)</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="13"> expect<span class="token punctuation">.</span><span class="token method function property-access">anything</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="14"><span class="token punctuation">]</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp row-span-2"><div class="warp-header h3warp"><h3>模拟函数</h3><div class="warp-body"><!--rehype:warp-class=row-span-2--><!--rehype:-->
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token comment">// const fn = jest.fn()</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment">// const fn = jest.fn().mockName('Unicorn') -- 命名为 mock, Jest 22+</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment">// 函数被调用</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBeCalled</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token comment">// 函数*未*调用</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token property-access">not</span><span class="token punctuation">.</span><span class="token method function property-access">toBeCalled</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token comment">// 函数只被调用一次</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toHaveBeenCalledTimes</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token comment">// 任何执行都带有这些参数</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBeCalledWith</span><span class="token punctuation">(</span>arg1<span class="token punctuation">,</span> arg2<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="11"><span class="token comment">// 最后一个执行是用这些参数</span>
|
||||
</span><span class="code-line line-number" line="12"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toHaveBeenLastCalledWith</span><span class="token punctuation">(</span>arg1<span class="token punctuation">,</span> arg2<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="13"><span class="token comment">// 第 N 个执行带有这些参数(Jest 23+)</span>
|
||||
</span><span class="code-line line-number" line="14"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toHaveBeenNthCalledWith</span><span class="token punctuation">(</span>callNumber<span class="token punctuation">,</span> args<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="15"><span class="token comment">// 函数返回没有抛出错误(Jest 23+)</span>
|
||||
</span><span class="code-line line-number" line="16"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toHaveReturnedTimes</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="17"><span class="token comment">// 函数返回一个值(Jest 23+)</span>
|
||||
</span><span class="code-line line-number" line="18"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toHaveReturnedWith</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="19"><span class="token comment">// 最后一个函数调用返回一个值(Jest 23+)</span>
|
||||
</span><span class="code-line line-number" line="20"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toHaveLastReturnedWith</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="21"><span class="token comment">// 第 N 个函数调用返回一个值(Jest 23+)</span>
|
||||
</span><span class="code-line line-number" line="22"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toHaveNthReturnedWith</span><span class="token punctuation">(</span>value<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="23"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">.</span><span class="token property-access">mock</span><span class="token punctuation">.</span><span class="token property-access">calls</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toEqual</span><span class="token punctuation">(</span><span class="token punctuation">[</span>
|
||||
</span><span class="code-line line-number" line="24"> <span class="token punctuation">[</span><span class="token string">'first'</span><span class="token punctuation">,</span> <span class="token string">'call'</span><span class="token punctuation">,</span> <span class="token string">'args'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="25"> <span class="token punctuation">[</span><span class="token string">'second'</span><span class="token punctuation">,</span> <span class="token string">'call'</span><span class="token punctuation">,</span> <span class="token string">'args'</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="26"><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token comment">// 多次调用</span>
|
||||
</span><span class="code-line line-number" line="27"><span class="token comment">// fn.mock.calls[0][0] — 第一次调用的第一个参数</span>
|
||||
</span><span class="code-line line-number" line="28"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">.</span><span class="token property-access">mock</span><span class="token punctuation">.</span><span class="token property-access">calls</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBe</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>别名</h4><div class="warp-body">
|
||||
<ul>
|
||||
<li><code>toBeCalled</code> → <code>toHaveBeenCalled</code></li>
|
||||
<li><code>toBeCalledWith</code> → <code>toHaveBeenCalledWith</code></li>
|
||||
<li><code>lastCalledWith</code> → <code>toHaveBeenLastCalledWith</code></li>
|
||||
<li><code>nthCalledWith</code> → <code>toHaveBeenNthCalledWith</code></li>
|
||||
<li><code>toReturnTimes</code> → <code>toHaveReturnedTimes</code></li>
|
||||
<li><code>toReturnWith</code> → <code>toHaveReturnedWith</code></li>
|
||||
<li><code>lastReturnedWith</code> → <code>toHaveLastReturnedWith</code></li>
|
||||
<li><code>nthReturnedWith</code> → <code>toHaveNthReturnedWith</code></li>
|
||||
</ul>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h3warp"><h3>杂项</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token comment">// 检查对象是否是类的实例。</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">A</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBeInstanceOf</span><span class="token punctuation">(</span><span class="token constant">A</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3">
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment">// 检查对象是否是函数的实例。</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toEqual</span><span class="token punctuation">(</span>
|
||||
</span><span class="code-line line-number" line="6"> expect<span class="token punctuation">.</span><span class="token method function property-access">any</span><span class="token punctuation">(</span><span class="token known-class-name class-name">Function</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="8">
|
||||
</span><span class="code-line line-number" line="9"><span class="token comment">// 匹配除 null 或 undefined 之外的任何内容</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token string">'pizza'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toEqual</span><span class="token punctuation">(</span>expect<span class="token punctuation">.</span><span class="token method function property-access">anything</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>快照</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token comment">// 这可确保某个值与最近的快照匹配。</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token function">expect</span><span class="token punctuation">(</span>node<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toMatchSnapshot</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3">
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment">// Jest 23+</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token function">expect</span><span class="token punctuation">(</span>user<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toMatchSnapshot</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token literal-property property">date</span><span class="token operator">:</span> expect<span class="token punctuation">.</span><span class="token method function property-access">any</span><span class="token punctuation">(</span><span class="token known-class-name class-name">Date</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="8">
|
||||
</span><span class="code-line line-number" line="9"><span class="token comment">// 确保值与最近的快照匹配。</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token function">expect</span><span class="token punctuation">(</span>user<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toMatchInlineSnapshot</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Promise 匹配器(Jest 20+)</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token function">test</span><span class="token punctuation">(</span><span class="token string">'resolve to lemon'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token comment">// 验证在测试期间是否调用了一定数量的断言。</span>
|
||||
</span><span class="code-line line-number" line="3"> expect<span class="token punctuation">.</span><span class="token method function property-access">assertions</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token comment">// 确保添加return语句</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token keyword control-flow">return</span> <span class="token function">expect</span><span class="token punctuation">(</span><span class="token known-class-name class-name">Promise</span><span class="token punctuation">.</span><span class="token method function property-access">resolve</span><span class="token punctuation">(</span><span class="token string">'lemon'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token punctuation">.</span><span class="token property-access">resolves</span><span class="token punctuation">.</span><span class="token method function property-access">toBe</span><span class="token punctuation">(</span><span class="token string">'lemon'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7">
|
||||
</span><span class="code-line line-number" line="8"> <span class="token keyword control-flow">return</span> <span class="token function">expect</span><span class="token punctuation">(</span><span class="token known-class-name class-name">Promise</span><span class="token punctuation">.</span><span class="token method function property-access">reject</span><span class="token punctuation">(</span><span class="token string">'octopus'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token punctuation">.</span><span class="token property-access">rejects</span><span class="token punctuation">.</span><span class="token method function property-access">toBeDefined</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="10">
|
||||
</span><span class="code-line line-number" line="11"> <span class="token keyword control-flow">return</span> <span class="token function">expect</span><span class="token punctuation">(</span><span class="token known-class-name class-name">Promise</span><span class="token punctuation">.</span><span class="token method function property-access">reject</span><span class="token punctuation">(</span>
|
||||
</span><span class="code-line line-number" line="12"> <span class="token known-class-name class-name">Error</span><span class="token punctuation">(</span><span class="token string">'pizza'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="13"> <span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token property-access">rejects</span><span class="token punctuation">.</span><span class="token method function property-access">toThrow</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="14"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>或者使用 async/await:</p>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token function">test</span><span class="token punctuation">(</span><span class="token string">'resolve to lemon'</span><span class="token punctuation">,</span> <span class="token keyword">async</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> expect<span class="token punctuation">.</span><span class="token method function property-access">assertions</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token keyword control-flow">await</span> <span class="token function">expect</span><span class="token punctuation">(</span><span class="token known-class-name class-name">Promise</span><span class="token punctuation">.</span><span class="token method function property-access">resolve</span><span class="token punctuation">(</span><span class="token string">'lemon'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token punctuation">.</span><span class="token property-access">resolves</span><span class="token punctuation">.</span><span class="token method function property-access">toBe</span><span class="token punctuation">(</span><span class="token string">'lemon'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5">
|
||||
</span><span class="code-line line-number" line="6"> <span class="token keyword control-flow">await</span> <span class="token function">expect</span><span class="token punctuation">(</span><span class="token known-class-name class-name">Promise</span><span class="token punctuation">.</span><span class="token method function property-access">resolve</span><span class="token punctuation">(</span><span class="token string">'lemon'</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token punctuation">.</span><span class="token property-access">resolves</span><span class="token punctuation">.</span><span class="token property-access">not</span><span class="token punctuation">.</span><span class="token method function property-access">toBe</span><span class="token punctuation">(</span><span class="token string">'octopus'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p><a href="https://jestjs.io/docs/en/expect#resolves">resolves 文档</a></p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>例外</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token comment">// const fn = () => {</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment">// throw new Error('Out of cheese!')</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment">// }</span>
|
||||
</span><span class="code-line line-number" line="4">
|
||||
</span><span class="code-line line-number" line="5"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toThrow</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toThrow</span><span class="token punctuation">(</span><span class="token string">'Out of cheese'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7">
|
||||
</span><span class="code-line line-number" line="8"><span class="token comment">// 测试错误消息在某处说“cheese”:这些是等价的</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toThrowError</span><span class="token punctuation">(</span><span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex">cheese</span><span class="token regex-delimiter">/</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toThrowError</span><span class="token punctuation">(</span><span class="token string">'cheese'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="11">
|
||||
</span><span class="code-line line-number" line="12"><span class="token comment">// 测试准确的错误信息</span>
|
||||
</span><span class="code-line line-number" line="13"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toThrowError</span><span class="token punctuation">(</span>
|
||||
</span><span class="code-line line-number" line="14"> <span class="token regex"><span class="token regex-delimiter">/</span><span class="token regex-source language-regex"><span class="token anchor function">^</span>Out of cheese!<span class="token anchor function">$</span></span><span class="token regex-delimiter">/</span></span>
|
||||
</span><span class="code-line line-number" line="15"><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="16"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toThrowError</span><span class="token punctuation">(</span>
|
||||
</span><span class="code-line line-number" line="17"> <span class="token keyword">new</span> <span class="token class-name">Error</span><span class="token punctuation">(</span><span class="token string">'Out of cheese!'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="18"><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="19">
|
||||
</span><span class="code-line line-number" line="20"><span class="token comment">// 测试函数在调用时是否抛出与最新快照匹配的错误。</span>
|
||||
</span><span class="code-line line-number" line="21"><span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toThrowErrorMatchingSnapshot</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>别名</h4><div class="warp-body">
|
||||
<ul>
|
||||
<li><code>toThrowError</code> → <code>toThrow</code></li>
|
||||
</ul>
|
||||
</div></div></div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>异步测试</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp row-span-2"><div class="warp-header h3warp"><h3>实例</h3><div class="warp-body"><!--rehype:warp-class=row-span-2--><!--rehype:-->
|
||||
<p>请参阅 Jest 文档中的 <a href="https://jestjs.io/docs/en/tutorial-async">更多示例</a>。</p>
|
||||
<p>在异步测试中指定一些预期的断言是一个很好的做法,所以如果你的断言根本没有被调用,测试将会失败。</p>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token function">test</span><span class="token punctuation">(</span><span class="token string">'async test'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token comment">// 在测试期间恰好调用了三个断言</span>
|
||||
</span><span class="code-line line-number" line="3"> expect<span class="token punctuation">.</span><span class="token method function property-access">assertions</span><span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token comment">// 或者 - 在测试期间至少调用一个断言</span>
|
||||
</span><span class="code-line line-number" line="5"> expect<span class="token punctuation">.</span><span class="token method function property-access">hasAssertions</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token comment">// 你的异步测试</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>请注意,您也可以在任何 <code>describe</code> 和 <code>test</code> 之外对每个文件执行此操作:</p>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token function">beforeEach</span><span class="token punctuation">(</span>expect<span class="token punctuation">.</span><span class="token property-access">hasAssertions</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>这将验证每个测试用例至少存在一个断言。 它还可以与更具体的 <code>expect.assertions(3)</code> 声明配合使用。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>async/await</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token function">test</span><span class="token punctuation">(</span><span class="token string">'async test'</span><span class="token punctuation">,</span> <span class="token keyword">async</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> expect<span class="token punctuation">.</span><span class="token method function property-access">assertions</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3">
|
||||
</span><span class="code-line line-number" line="4"> <span class="token keyword">const</span> result <span class="token operator">=</span> <span class="token keyword control-flow">await</span> <span class="token function">runAsyncOperation</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token function">expect</span><span class="token punctuation">(</span>result<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBe</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp row-span-2"><div class="warp-header h3warp"><h3>done() 回调</h3><div class="warp-body"><!--rehype:warp-class=row-span-2--><!--rehype:-->
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token function">test</span><span class="token punctuation">(</span><span class="token string">'async test'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token parameter">done</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> expect<span class="token punctuation">.</span><span class="token method function property-access">assertions</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3">
|
||||
</span><span class="code-line line-number" line="4"> <span class="token function">runAsyncOperation</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5">
|
||||
</span><span class="code-line line-number" line="6"> <span class="token function">setTimeout</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token keyword control-flow">try</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token keyword">const</span> result <span class="token operator">=</span> <span class="token function">getAsyncOperationResult</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token function">expect</span><span class="token punctuation">(</span>result<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBe</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token function">done</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token punctuation">}</span> <span class="token keyword control-flow">catch</span> <span class="token punctuation">(</span>err<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="12"> done<span class="token punctuation">.</span><span class="token method function property-access">fail</span><span class="token punctuation">(</span>err<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="13"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="14"> <span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="15"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>将断言包装在 try/catch 块中,否则 Jest 将忽略失败</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Promises</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token function">test</span><span class="token punctuation">(</span><span class="token string">'async test'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> expect<span class="token punctuation">.</span><span class="token method function property-access">assertions</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3">
|
||||
</span><span class="code-line line-number" line="4"> <span class="token keyword control-flow">return</span> <span class="token function">runAsyncOperation</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">then</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">result</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token function">expect</span><span class="token punctuation">(</span>result<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBe</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>从你的测试中 <em>返回</em> 一个 Promise</p>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>模拟</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp row-span-2"><div class="warp-header h3warp"><h3>模拟函数</h3><div class="warp-body"><!--rehype:warp-class=row-span-2--><!--rehype:-->
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token function">test</span><span class="token punctuation">(</span><span class="token string">'call the callback'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token keyword">const</span> callback <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">fn</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token function">fn</span><span class="token punctuation">(</span>callback<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token function">expect</span><span class="token punctuation">(</span>callback<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBeCalled</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token function">expect</span><span class="token punctuation">(</span>callback<span class="token punctuation">.</span><span class="token property-access">mock</span><span class="token punctuation">.</span><span class="token property-access">calls</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token property-access">baz</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBe</span><span class="token punctuation">(</span><span class="token string">'pizza'</span><span class="token punctuation">)</span> <span class="token comment">// 第一次调用的第二个参数</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token comment">// 匹配第一个和最后一个参数,但忽略第二个参数</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token function">expect</span><span class="token punctuation">(</span>callback<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toHaveBeenLastCalledWith</span><span class="token punctuation">(</span><span class="token string">'meal'</span><span class="token punctuation">,</span> expect<span class="token punctuation">.</span><span class="token method function property-access">anything</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token string">'margarita'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>您还可以使用快照:</p>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token function">test</span><span class="token punctuation">(</span><span class="token string">'call the callback'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token comment">// mockName 在 Jest 22+ 中可用</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token keyword">const</span> callback <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">fn</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">mockName</span><span class="token punctuation">(</span><span class="token string">'Unicorn'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token function">fn</span><span class="token punctuation">(</span>callback<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token function">expect</span><span class="token punctuation">(</span>callback<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toMatchSnapshot</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token comment">// -></span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token comment">// [MockFunction Unicorn] {</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token comment">// "calls": Array [</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token comment">// ...</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>并将实现传递给 <code>jest.fn</code> 函数:</p>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> callback <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">fn</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token boolean">true</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p><a href="https://jestjs.io/docs/en/mock-function-api">模拟函数文档</a></p>
|
||||
</div></div></div><div class="warp row-span-2"><div class="warp-header h3warp"><h3>返回、解析和拒绝值</h3><div class="warp-body"><!--rehype:warp-class=row-span-2-->
|
||||
<p>您的模拟可以返回值:</p>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> callback
|
||||
</span><span class="code-line line-number" line="2"> <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">fn</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">mockReturnValue</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token keyword">const</span> callbackOnce
|
||||
</span><span class="code-line line-number" line="4"> <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">fn</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">mockReturnValueOnce</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>或解析值:</p>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> promise
|
||||
</span><span class="code-line line-number" line="2"> <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">fn</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">mockResolvedValue</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token keyword">const</span> promiseOnce
|
||||
</span><span class="code-line line-number" line="4"> <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">fn</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">mockResolvedValueOnce</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>他们甚至可以拒绝值:</p>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> failedPromise
|
||||
</span><span class="code-line line-number" line="2"> <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">fn</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">mockRejectedValue</span><span class="token punctuation">(</span><span class="token string">'Error'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token keyword">const</span> failedPromiseOnce
|
||||
</span><span class="code-line line-number" line="4"> <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">fn</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">mockRejectedValueOnce</span><span class="token punctuation">(</span><span class="token string">'Error'</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>你甚至可以结合这些:</p>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> callback
|
||||
</span><span class="code-line line-number" line="2"> <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">fn</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">mockReturnValueOnce</span><span class="token punctuation">(</span><span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">mockReturnValue</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment">// -></span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment">// call 1: false</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token comment">// call 2+: true</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>使用 <code>jest.mock</code> 方法模拟模块</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1">jest<span class="token punctuation">.</span><span class="token method function property-access">mock</span><span class="token punctuation">(</span><span class="token string">'lodash/memoize'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">(</span><span class="token parameter">a</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> a<span class="token punctuation">)</span> <span class="token comment">// The original lodash/memoize should exist</span>
|
||||
</span><span class="code-line line-number" line="2">jest<span class="token punctuation">.</span><span class="token method function property-access">mock</span><span class="token punctuation">(</span><span class="token string">'lodash/memoize'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">(</span><span class="token parameter">a</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> a<span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">virtual</span><span class="token operator">:</span> <span class="token boolean">true</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token comment">// The original lodash/memoize isn’t required</span>
|
||||
</span></code></pre>
|
||||
<p><a href="https://jestjs.io/docs/en/jest-object#jestmockmodulename-factory-options">jest.mock docs</a></p>
|
||||
<blockquote>
|
||||
<p>注意:当使用 <code>babel-jest</code> 时,对 <code>jest.mock</code> 的调用将自动提升到代码块的顶部。 如果您想明确避免这种行为,请使用 <code>jest.doMock</code>。</p>
|
||||
</blockquote>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>使用模拟文件模拟模块</h3><div class="warp-body">
|
||||
<p>创建一个类似 <code>__mocks__/lodash/memoize.js</code> 的文件:</p>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1">module<span class="token punctuation">.</span><span class="token method-variable function-variable method function property-access">exports</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token parameter">a</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> a
|
||||
</span></code></pre>
|
||||
<p>添加到您的测试中:</p>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1">jest<span class="token punctuation">.</span><span class="token method function property-access">mock</span><span class="token punctuation">(</span><span class="token string">'lodash/memoize'</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>注意:当使用 <code>babel-jest</code> 时,对 <code>jest.mock</code> 的调用将自动提升到代码块的顶部。 如果您想明确避免这种行为,请使用 <code>jest.doMock</code>。</p>
|
||||
<p><a href="https://jestjs.io/docs/en/manual-mocks">手动模拟文档</a></p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>模拟对象方法</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> spy <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">spyOn</span><span class="token punctuation">(</span>console<span class="token punctuation">,</span> <span class="token string">'log'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">mockImplementation</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token function">expect</span><span class="token punctuation">(</span><span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token property-access">log</span><span class="token punctuation">.</span><span class="token property-access">mock</span><span class="token punctuation">.</span><span class="token property-access">calls</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toEqual</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token string">'dope'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">'nope'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3">spy<span class="token punctuation">.</span><span class="token method function property-access">mockRestore</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> spy <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">spyOn</span><span class="token punctuation">(</span>ajax<span class="token punctuation">,</span> <span class="token string">'request'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">mockImplementation</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token known-class-name class-name">Promise</span><span class="token punctuation">.</span><span class="token method function property-access">resolve</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">success</span><span class="token operator">:</span> <span class="token boolean">true</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token function">expect</span><span class="token punctuation">(</span>spy<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toHaveBeenCalled</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3">spy<span class="token punctuation">.</span><span class="token method function property-access">mockRestore</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>模拟 getter 和 setter (Jest 22.1.0+)</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> <span class="token dom variable">location</span> <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">const</span> getTitle <span class="token operator">=</span> jest
|
||||
</span><span class="code-line line-number" line="3"> <span class="token punctuation">.</span><span class="token method function property-access">spyOn</span><span class="token punctuation">(</span><span class="token dom variable">location</span><span class="token punctuation">,</span> <span class="token string">'title'</span><span class="token punctuation">,</span> <span class="token string">'get'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token punctuation">.</span><span class="token method function property-access">mockImplementation</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token string">'pizza'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">const</span> setTitle <span class="token operator">=</span> jest
|
||||
</span><span class="code-line line-number" line="6"> <span class="token punctuation">.</span><span class="token method function property-access">spyOn</span><span class="token punctuation">(</span><span class="token dom variable">location</span><span class="token punctuation">,</span> <span class="token string">'title'</span><span class="token punctuation">,</span> <span class="token string">'set'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token punctuation">.</span><span class="token method function property-access">mockImplementation</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp row-span-3"><div class="warp-header h3warp"><h3>定时器模拟</h3><div class="warp-body"><!--rehype:warp-class=row-span-3--><!--rehype:-->
|
||||
<p>为使用本机计时器函数(<code>setTimeout</code>、<code>setInterval</code>、<code>clearTimeout</code>、<code>clearInterval</code>)的代码编写同步测试。</p>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token comment">// 启用假计时器</span>
|
||||
</span><span class="code-line line-number" line="2">jest<span class="token punctuation">.</span><span class="token method function property-access">useFakeTimers</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token function">test</span><span class="token punctuation">(</span><span class="token string">'kill the time'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token keyword">const</span> callback <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">fn</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token comment">// 运行一些使用 setTimeout 或 setInterval 的代码</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token keyword">const</span> actual <span class="token operator">=</span> <span class="token function">someFunctionThatUseTimers</span><span class="token punctuation">(</span>callback<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token comment">// 快进直到所有定时器都执行完毕</span>
|
||||
</span><span class="code-line line-number" line="8"> jest<span class="token punctuation">.</span><span class="token method function property-access">runAllTimers</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token comment">// 同步检查结果</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token function">expect</span><span class="token punctuation">(</span>callback<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toHaveBeenCalledTimes</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="11"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>或者使用 <a href="https://jestjs.io/docs/en/timer-mocks#advance-timers-by-time">advanceTimersByTime()</a> 按时间调整计时器:</p>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token comment">// 启用假计时器</span>
|
||||
</span><span class="code-line line-number" line="2">jest<span class="token punctuation">.</span><span class="token method function property-access">useFakeTimers</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token function">test</span><span class="token punctuation">(</span><span class="token string">'kill the time'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token keyword">const</span> callback <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">fn</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token comment">// 运行一些使用 setTimeout 或 setInterval 的代码</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token keyword">const</span> actual <span class="token operator">=</span> <span class="token function">someFunctionThatUseTimers</span><span class="token punctuation">(</span>callback<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token comment">// 快进 250 毫秒</span>
|
||||
</span><span class="code-line line-number" line="8"> jest<span class="token punctuation">.</span><span class="token method function property-access">advanceTimersByTime</span><span class="token punctuation">(</span><span class="token number">250</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token comment">// 同步检查结果</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token function">expect</span><span class="token punctuation">(</span>callback<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toHaveBeenCalledTimes</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="11"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>对于特殊情况,请使用 <a href="https://jestjs.io/docs/en/timer-mocks#run-pending-timers">jest.runOnlyPendingTimers()</a>。</p>
|
||||
<p><strong>注意:</strong> 您应该在测试用例中调用 <code>jest.useFakeTimers()</code> 以使用其他假计时器方法。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>模拟 getters 和 setters</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> getTitle <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">fn</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token string">'pizza'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">const</span> setTitle <span class="token operator">=</span> jest<span class="token punctuation">.</span><span class="token method function property-access">fn</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token keyword">const</span> <span class="token dom variable">location</span> <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token known-class-name class-name">Object</span><span class="token punctuation">.</span><span class="token method function property-access">defineProperty</span><span class="token punctuation">(</span><span class="token dom variable">location</span><span class="token punctuation">,</span> <span class="token string">'title'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token literal-property property">get</span><span class="token operator">:</span> getTitle<span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token literal-property property">set</span><span class="token operator">:</span> setTitle<span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp row-span-2"><div class="warp-header h3warp"><h3>清除和恢复模拟</h3><div class="warp-body"><!--rehype:warp-class=row-span-2--><!--rehype:-->
|
||||
<p>对于一个模拟</p>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token comment">// 清除模拟使用日期</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment">// (fn.mock.calls、fn.mock.instances)</span>
|
||||
</span><span class="code-line line-number" line="3">fn<span class="token punctuation">.</span><span class="token method function property-access">mockClear</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment">// 清除并删除任何模拟的返回值或实现</span>
|
||||
</span><span class="code-line line-number" line="5">fn<span class="token punctuation">.</span><span class="token method function property-access">mockReset</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token comment">// 重置并恢复初始实现</span>
|
||||
</span><span class="code-line line-number" line="7">fn<span class="token punctuation">.</span><span class="token method function property-access">mockRestore</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<blockquote>
|
||||
<p>注意:<code>mockRestore</code> 仅适用于由<code>jest.spyOn</code> 创建的模拟。对于所有模拟:</p>
|
||||
</blockquote>
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token comment">// 清除所有 mock 的 </span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment">// mock.calls、mock.instances、</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment">// mock.contexts 和 mock.results 属性。</span>
|
||||
</span><span class="code-line line-number" line="4">jest<span class="token punctuation">.</span><span class="token method function property-access">clearAllMocks</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token comment">// 重置所有模拟的状态。</span>
|
||||
</span><span class="code-line line-number" line="6">jest<span class="token punctuation">.</span><span class="token method function property-access">resetAllMocks</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token comment">// 将所有模拟恢复到其原始值。</span>
|
||||
</span><span class="code-line line-number" line="8">jest<span class="token punctuation">.</span><span class="token method function property-access">restoreAllMocks</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>使用模拟时访问原始模块</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1">jest<span class="token punctuation">.</span><span class="token method function property-access">mock</span><span class="token punctuation">(</span><span class="token string">'fs'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment">// 模拟模块</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token keyword">const</span> fs <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'fs'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment">// 原始模块</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">const</span> fs <span class="token operator">=</span> require<span class="token punctuation">.</span><span class="token method function property-access">requireActual</span><span class="token punctuation">(</span><span class="token string">'fs'</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>数据驱动测试(Jest 23+)</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>使用不同的数据运行相同的测试</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1">test<span class="token punctuation">.</span><span class="token method function property-access">each</span><span class="token punctuation">(</span><span class="token punctuation">[</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token string">'.add(%s, %s)'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token parameter">a<span class="token punctuation">,</span> b<span class="token punctuation">,</span> expected</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token function">expect</span><span class="token punctuation">(</span>a <span class="token operator">+</span> b<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBe</span><span class="token punctuation">(</span>expected<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>使用模板文字相同</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1">test<span class="token punctuation">.</span><span class="token property-access">each</span><span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">
|
||||
</span></span></span><span class="code-line line-number" line="2"><span class="token template-string"><span class="token string"> a | b | expected
|
||||
</span></span></span><span class="code-line line-number" line="3"><span class="token template-string"><span class="token string"> </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token number">1</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> | </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token number">1</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> | </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token number">2</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">
|
||||
</span></span></span><span class="code-line line-number" line="4"><span class="token template-string"><span class="token string"> </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token number">1</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> | </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token number">2</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> | </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token number">3</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">
|
||||
</span></span></span><span class="code-line line-number" line="5"><span class="token template-string"><span class="token string"> </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token number">2</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> | </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token number">1</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> | </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span><span class="token number">3</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">
|
||||
</span></span></span><span class="code-line line-number" line="6"><span class="token template-string"><span class="token string"></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">(</span><span class="token string">'returns $expected when $a is added $b'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token parameter"><span class="token punctuation">{</span> a<span class="token punctuation">,</span> b<span class="token punctuation">,</span> expected <span class="token punctuation">}</span></span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token function">expect</span><span class="token punctuation">(</span>a <span class="token operator">+</span> b<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toBe</span><span class="token punctuation">(</span>expected<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>或在“describe”级别</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1">describe<span class="token punctuation">.</span><span class="token method function property-access">each</span><span class="token punctuation">(</span><span class="token punctuation">[</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token punctuation">[</span><span class="token string">'mobile'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">'tablet'</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">'desktop'</span><span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token string">'checkout flow on %s'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token parameter">viewport</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token function">test</span><span class="token punctuation">(</span><span class="token string">'displays success page'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token comment">//</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p><a href="https://jestjs.io/docs/en/api#describeeachtablename-fn-timeout">describe.each() 文档</a>、<a href="https://jestjs.io/docs/en/api#testeachtablename-fn-timeout">test.each() 文档</a>,</p>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>跳过测试</h2><div class="warp-body"><!--rehype:body-class=cols-2-->
|
||||
</div></div><div class="h2warp-body cols-2"><div class="warp"><div class="warp-header h3warp"><h3>不要运行这些测试</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1">describe<span class="token punctuation">.</span><span class="token method function property-access">skip</span><span class="token punctuation">(</span><span class="token string">'makePoniesPink'</span><span class="token spread operator">...</span>
|
||||
</span><span class="code-line line-number" line="2">tests<span class="token punctuation">.</span><span class="token method function property-access">skip</span><span class="token punctuation">(</span><span class="token string">'make each pony pink'</span><span class="token spread operator">...</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>仅运行以下测试</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1">describe<span class="token punctuation">.</span><span class="token method function property-access">only</span><span class="token punctuation">(</span><span class="token string">'makePoniesPink'</span><span class="token spread operator">...</span>
|
||||
</span><span class="code-line line-number" line="2">tests<span class="token punctuation">.</span><span class="token method function property-access">only</span><span class="token punctuation">(</span><span class="token string">'make each pony pink'</span><span class="token spread operator">...</span>
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>测试有副作用的模块</h2><div class="warp-body"><!--rehype:body-class=cols-1-->
|
||||
</div></div><div class="h2warp-body cols-1"><div class="warp"><div class="warp-header h3warp"><h3>实例</h3><div class="warp-body">
|
||||
<pre class="language-js"><code class="language-js code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> modulePath <span class="token operator">=</span> <span class="token string">'../module-to-test'</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token function">afterEach</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="3"> jest<span class="token punctuation">.</span><span class="token method function property-access">resetModules</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token function">test</span><span class="token punctuation">(</span><span class="token string">'第一次测试'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token comment">// 准备第一次测试的条件</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token keyword">const</span> result <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span>modulePath<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token function">expect</span><span class="token punctuation">(</span>result<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toMatchSnapshot</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token function">test</span><span class="token punctuation">(</span><span class="token string">'第二个文本'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token comment">// 准备第二次测试的条件</span>
|
||||
</span><span class="code-line line-number" line="12"> <span class="token keyword">const</span> <span class="token function-variable function">fn</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token function">require</span><span class="token punctuation">(</span>modulePath<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="13"> <span class="token function">expect</span><span class="token punctuation">(</span>fn<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token method function property-access">toThrow</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="14"><span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>Node.js 和 Jest 会缓存你需要的模块。 要测试具有副作用的模块,您需要在测试之间重置模块注册表</p>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>另见</h2><div class="warp-body">
|
||||
<ul>
|
||||
<li><a href="https://github.com/sapegin/jest-cheat-sheet">Jest cheat sheet</a> <em>(github.com)</em></li>
|
||||
</ul>
|
||||
|
||||
</div></div></div></div></div><footer class="footer-warp"><footer class="max-container">© 2022 Kenny Wang, All rights reserved.</footer></footer></body>
|
||||
</html>
|
439
docs/json.html
Normal file
439
docs/json.html
Normal file
@ -0,0 +1,439 @@
|
||||
<!doctype html>
|
||||
<html lang="en" data-color-mode="dark">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>JSON 备忘清单
|
||||
& Quick Reference</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta description="这是理解和编写 JSON 格式配置文件的快速参考备忘单。为开发人员分享快速参考备忘单。">
|
||||
<meta keywords="Quick,Reference">
|
||||
<link rel="stylesheet" href="../style/style.css">
|
||||
</head>
|
||||
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em"><path opacity=".5" d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="white"></path><path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#cbd5e1"></path><path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#292D32"></path></svg><span class="title">Quick Reference</span></a><div class="menu"><a href="https://github.com/jaywcjlove/reference/blob/main/docs/json.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="warp max-container"><header class="warp-header h1warp"><h1>JSON 备忘清单</h1><div class="warp-body">
|
||||
<p>这是理解和编写 JSON 格式配置文件的快速参考备忘单。</p>
|
||||
</div></header><div class="h1warp-body"><div class="warp"><div class="warp-header h2warp"><h2>入门</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>介绍</h3><div class="warp-body">
|
||||
<p><a href="https://json.org/">JSON</a> 是一种基于文本的轻量级开放标准,专为人类可读的数据交换而设计。</p>
|
||||
<ul>
|
||||
<li>JSON 代表 JavaScript 对象表示法</li>
|
||||
<li>JSON 易于读写。</li>
|
||||
<li>JSON 是与语言无关的数据交换格式</li>
|
||||
<li>JSON 文件扩展名为 <code>.json</code></li>
|
||||
<li>JSON Internet 媒体类型为 <code>application/json</code></li>
|
||||
</ul>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>示例</h3><div class="warp-body">
|
||||
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"Jason"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token property">"age"</span><span class="token operator">:</span> <span class="token number">39</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token property">"height"</span><span class="token operator">:</span> <span class="token number">1.92</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token property">"gender"</span><span class="token operator">:</span> <span class="token string">"M"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token property">"salary"</span><span class="token operator">:</span> <span class="token number">70000</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token property">"married"</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token property">"children"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token punctuation">{</span><span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"Tom"</span><span class="token punctuation">,</span> <span class="token property">"age"</span><span class="token operator">:</span> <span class="token number">9</span><span class="token punctuation">,</span> <span class="token property">"gender"</span><span class="token operator">:</span><span class="token string">"M"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token punctuation">{</span><span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"Ava"</span><span class="token punctuation">,</span> <span class="token property">"age"</span><span class="token operator">:</span> <span class="token number">7</span><span class="token punctuation">,</span> <span class="token property">"gender"</span><span class="token operator">:</span><span class="token string">"F"</span><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="12"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>类型</h3><div class="warp-body">
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>类型</th>
|
||||
<th>描述</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Number</code></td>
|
||||
<td>双精度浮点</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>String</code></td>
|
||||
<td>字符系列</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Boolean</code></td>
|
||||
<td>“true”或“false”</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Array</code></td>
|
||||
<td>有序的值序列</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Value</code></td>
|
||||
<td>字符串、数字、布尔值、空值等</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Object</code></td>
|
||||
<td>键/值对的无序集合</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>null</code></td>
|
||||
<td>Null 或 Empty</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div><div class="warp" style="grid-row: span 3/span 3;"><div class="warp-header h3warp"><h3>字符串</h3><div class="warp-body"><!--rehype:data-warp-style=grid-row: span 3/span 3;--><!--rehype:-->
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>\"</code></td>
|
||||
<td>双引号 Double quote</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>\\</code></td>
|
||||
<td>反斜杠 Backslash</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>\/</code></td>
|
||||
<td>正斜杠 Forward slash</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>\b</code></td>
|
||||
<td>退格 Backspace</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>\f</code></td>
|
||||
<td>换页 Form feed</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>\n</code></td>
|
||||
<td>换行 Newline</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>\r</code></td>
|
||||
<td>回车 Carriage return</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>\t</code></td>
|
||||
<td>标签 Tab</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>\u</code></td>
|
||||
<td>后跟四个十六进制数字</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>示例</h4><div class="warp-body">
|
||||
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token property">"url"</span><span class="token operator">:</span> <span class="token string">"https://quickref.me"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token property">"msg"</span> <span class="token operator">:</span> <span class="token string">"Hi,\n\"QuickRef.ME\""</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token property">"intro"</span><span class="token operator">:</span> <span class="token string">"Share quick reference and cheat sheet for developers."</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h4warp"><h4>无效字符串</h4><div class="warp-body">
|
||||
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span> <span class="token property">"foo"</span><span class="token operator">:</span> 'bar' <span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>Have to be delimited by double quotes</p>
|
||||
</div></div></div></div></div><div class="warp row-span-2"><div class="warp-header h3warp"><h3>数字</h3><div class="warp-body"><!--rehype:warp-class=row-span-2--><!--rehype:-->
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Integer</code></td>
|
||||
<td>Digits 1-9, 0 and positive or negative</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Fraction</code></td>
|
||||
<td>Fractions like 0.3, 3.9</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Exponent</code></td>
|
||||
<td>Exponent like e, e+, e-, E, E+, E</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>示例</h4><div class="warp-body">
|
||||
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token property">"positive"</span> <span class="token operator">:</span> <span class="token number">12</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token property">"negative"</span> <span class="token operator">:</span> <span class="token number">-1</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token property">"fraction"</span> <span class="token operator">:</span> <span class="token number">10.25</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token property">"exponent"</span> <span class="token operator">:</span> <span class="token number">1.0E+2</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token property">"zero"</span> <span class="token operator">:</span> <span class="token number">0</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h4warp"><h4>无效的数字</h4><div class="warp-body">
|
||||
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span> <span class="token property">"foo"</span><span class="token operator">:</span> 0xFF <span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>在JSON中,只能使用十进制文字</p>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h3warp"><h3>对象 Objects</h3><div class="warp-body">
|
||||
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token property">"color"</span><span class="token operator">:</span> <span class="token string">"Purple"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"210"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token property">"composition"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token property">"R"</span><span class="token operator">:</span> <span class="token number">70</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token property">"G"</span><span class="token operator">:</span> <span class="token number">39</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token property">"B"</span><span class="token operator">:</span> <span class="token number">89</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token property">"empty_object"</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>用逗号分隔的多个键/值对</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>数组 Arrays</h3><div class="warp-body">
|
||||
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
<p>以 <code>[</code> 开始并以 <code>]</code> 结束</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>对象数组</h3><div class="warp-body">
|
||||
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token property">"children"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token punctuation">{</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"Jimmy Smith"</span><span class="token punctuation">,</span> <span class="token property">"age"</span><span class="token operator">:</span> <span class="token number">15</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token punctuation">{</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"Sammy Sosa"</span><span class="token punctuation">,</span> <span class="token property">"age"</span><span class="token operator">:</span> <span class="token number">12</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>数组对象</h3><div class="warp-body">
|
||||
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token property">"attributes"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">"a1"</span><span class="token punctuation">,</span> <span class="token string">"a2"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token property">"methods"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">"getter"</span><span class="token punctuation">,</span> <span class="token string">"setter"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token property">"empty_array"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>二维阵列</h3><div class="warp-body">
|
||||
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token property">"my_sequences"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token punctuation">[</span><span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">6</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token punctuation">[</span><span class="token number">7</span><span class="token punctuation">,</span> <span class="token number">8</span><span class="token punctuation">,</span> <span class="token number">9</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">11</span><span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>对象的对象</h3><div class="warp-body">
|
||||
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token property">"Mark McGwire"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token property">"hr"</span><span class="token operator">:</span> <span class="token number">65</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token property">"avg"</span><span class="token operator">:</span> <span class="token number">0.278</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token property">"Sammy Sosa"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token property">"hr"</span><span class="token operator">:</span> <span class="token number">63</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token property">"avg"</span><span class="token operator">:</span> <span class="token number">0.288</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>嵌套</h3><div class="warp-body">
|
||||
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token property">"Jack"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token property">"id"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"Franc"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token property">"salary"</span><span class="token operator">:</span> <span class="token number">25000</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token property">"hobby"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">"a"</span><span class="token punctuation">,</span> <span class="token string">"b"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token property">"location"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token property">"country"</span><span class="token operator">:</span> <span class="token string">"A"</span><span class="token punctuation">,</span> <span class="token property">"city"</span><span class="token operator">:</span> <span class="token string">"A-A"</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="11"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>在 JavaScript 中访问 JSON</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>访问对象</h3><div class="warp-body">
|
||||
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">let</span> myObject <span class="token operator">=</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token string-property property">"name"</span><span class="token operator">:</span> <span class="token string">"Jason"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token string-property property">"last"</span><span class="token operator">:</span> <span class="token string">"Doe"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token string-property property">"age"</span><span class="token operator">:</span> <span class="token number">39</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token string-property property">"gender"</span><span class="token operator">:</span> <span class="token string">"M"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token string-property property">"salary"</span><span class="token operator">:</span> <span class="token number">70000</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token string-property property">"married"</span><span class="token operator">:</span> <span class="token boolean">true</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span></code></pre>
|
||||
<hr>
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>myObject.name</code></td>
|
||||
<td>"Jason"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>myObject["name"]</code></td>
|
||||
<td>"Jason"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>myObject.age</code></td>
|
||||
<td>39</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>myObject.other</code></td>
|
||||
<td>undefined</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>myObject[0]</code></td>
|
||||
<td>undefined</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div><div class="warp" style="grid-row: span 2/span 2;"><div class="warp-header h3warp"><h3>访问嵌套</h3><div class="warp-body"><!--rehype:data-warp-style=grid-row: span 2/span 2;--><!--rehype:-->
|
||||
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">let</span> myObject <span class="token operator">=</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token string-property property">"ref"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token string-property property">"name"</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token string-property property">"last"</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token string-property property">"age"</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token string-property property">"gender"</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token string-property property">"salary"</span><span class="token operator">:</span> <span class="token number">4</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token string-property property">"married"</span><span class="token operator">:</span> <span class="token number">5</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token string-property property">"jdoe"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token string">"Jason"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="12"> <span class="token string">"Doe"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="13"> <span class="token number">39</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="14"> <span class="token string">"M"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="15"> <span class="token number">70000</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="16"> <span class="token boolean">true</span>
|
||||
</span><span class="code-line line-number" line="17"> <span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="18"> <span class="token string-property property">"jsmith"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
|
||||
</span><span class="code-line line-number" line="19"> <span class="token string">"Tom"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="20"> <span class="token string">"Smith"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="21"> <span class="token number">42</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="22"> <span class="token string">"F"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="23"> <span class="token number">80000</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="24"> <span class="token boolean">true</span>
|
||||
</span><span class="code-line line-number" line="25"> <span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="26"><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span></code></pre>
|
||||
<hr>
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>myObject.ref.age</code></td>
|
||||
<td>2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>myObject["ref"]["age"]</code></td>
|
||||
<td>2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>myObject.jdoe</code></td>
|
||||
<td>["Jason", "Doe", 39 ...]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>myObject.jsmith[3]</code></td>
|
||||
<td>"F"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>myObject[1]</code></td>
|
||||
<td>undefined</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div><div class="warp" style="grid-row: span 2/span 2;"><div class="warp-header h3warp"><h3>访问对象数组</h3><div class="warp-body"><!--rehype:data-warp-style=grid-row: span 2/span 2;--><!--rehype:-->
|
||||
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">let</span> myArray <span class="token operator">=</span> <span class="token punctuation">[</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token string-property property">"name"</span><span class="token operator">:</span> <span class="token string">"Jason"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token string-property property">"last"</span><span class="token operator">:</span> <span class="token string">"Doe"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token string-property property">"age"</span><span class="token operator">:</span> <span class="token number">39</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token string-property property">"gender"</span><span class="token operator">:</span> <span class="token string">"M"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token string-property property">"salary"</span><span class="token operator">:</span> <span class="token number">70000</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token string-property property">"married"</span><span class="token operator">:</span> <span class="token boolean">true</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token string-property property">"name"</span><span class="token operator">:</span> <span class="token string">"Tom"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="12"> <span class="token string-property property">"last"</span><span class="token operator">:</span> <span class="token string">"Smith"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="13"> <span class="token string-property property">"age"</span><span class="token operator">:</span> <span class="token number">42</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="14"> <span class="token string-property property">"gender"</span><span class="token operator">:</span> <span class="token string">"F"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="15"> <span class="token string-property property">"salary"</span><span class="token operator">:</span> <span class="token number">80000</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="16"> <span class="token string-property property">"married"</span><span class="token operator">:</span> <span class="token boolean">true</span>
|
||||
</span><span class="code-line line-number" line="17"> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="18"> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="19"> <span class="token string-property property">"name"</span><span class="token operator">:</span> <span class="token string">"Amy"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="20"> <span class="token string-property property">"last"</span><span class="token operator">:</span> <span class="token string">"Burnquist"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="21"> <span class="token string-property property">"age"</span><span class="token operator">:</span> <span class="token number">29</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="22"> <span class="token string-property property">"gender"</span><span class="token operator">:</span> <span class="token string">"F"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="23"> <span class="token string-property property">"salary"</span><span class="token operator">:</span> <span class="token number">60000</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="24"> <span class="token string-property property">"married"</span><span class="token operator">:</span> <span class="token boolean">false</span>
|
||||
</span><span class="code-line line-number" line="25"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="26"><span class="token punctuation">]</span><span class="token punctuation">;</span>
|
||||
</span></code></pre>
|
||||
<hr>
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>myArray[0]</code></td>
|
||||
<td><code>{</code>"name": "Jason", ...<code>}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>myArray[1].name</code></td>
|
||||
<td>"Tom"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>myArray[1][2]</code></td>
|
||||
<td>42</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>myArray[3]</code></td>
|
||||
<td>undefined</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>myArray[3].gender</code></td>
|
||||
<td>TypeError: Cannot read...</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>访问阵列</h3><div class="warp-body">
|
||||
<pre class="language-javascript"><code class="language-javascript code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">let</span> myArray <span class="token operator">=</span> <span class="token punctuation">[</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token string">"Jason"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token string">"Doe"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token number">39</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token string">"M"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token number">70000</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token boolean">true</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token punctuation">]</span><span class="token punctuation">;</span>
|
||||
</span></code></pre>
|
||||
<hr>
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>myArray[1]</code></td>
|
||||
<td>"Doe"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>myArray[5]</code></td>
|
||||
<td>true</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>myArray[6]</code></td>
|
||||
<td>undefined</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>另见</h2><div class="warp-body">
|
||||
<ul>
|
||||
<li><a href="https://www.json.org/json-en.html">JSON</a> <em>(json.org)</em></li>
|
||||
<li><a href="http://jsoneditoronline.org/">JSON Editor Online</a> <em>(jsoneditoronline.org)</em></li>
|
||||
<li><a href="https://tableconvert.com/json-to-markdown">Convert JSON Array to Markdown Table, CSV and more</a> <em>(tableconvert.com)</em></li>
|
||||
</ul>
|
||||
|
||||
</div></div></div></div></div><footer class="footer-warp"><footer class="max-container">© 2022 Kenny Wang, All rights reserved.</footer></footer></body>
|
||||
</html>
|
205
docs/markdown.html
Normal file
205
docs/markdown.html
Normal file
@ -0,0 +1,205 @@
|
||||
<!doctype html>
|
||||
<html lang="en" data-color-mode="dark">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Markdown 备忘清单
|
||||
& Quick Reference</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta description="这是 Markdown 语法的快速参考备忘单。为开发人员分享快速参考备忘单。">
|
||||
<meta keywords="Quick,Reference">
|
||||
<link rel="stylesheet" href="../style/style.css">
|
||||
</head>
|
||||
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em"><path opacity=".5" d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="white"></path><path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#cbd5e1"></path><path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#292D32"></path></svg><span class="title">Quick Reference</span></a><div class="menu"><a href="https://github.com/jaywcjlove/reference/blob/main/docs/markdown.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="warp max-container"><header class="warp-header h1warp"><h1>Markdown 备忘清单</h1><div class="warp-body">
|
||||
<p>这是 Markdown 语法的快速参考备忘单。</p>
|
||||
</div></header><div class="h1warp-body"><div class="warp"><div class="warp-header h2warp"><h2>Markdown 快速参考</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>标题 (atx 风格)</h3><div class="warp-body">
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token title important"><span class="token punctuation">#</span> h1</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token title important"><span class="token punctuation">##</span> h2</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token title important"><span class="token punctuation">###</span> h3</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token title important"><span class="token punctuation">####</span> h4</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token title important"><span class="token punctuation">#####</span> h5</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token title important"><span class="token punctuation">######</span> h6</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>标题 (setext 风格)</h3><div class="warp-body">
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token title important">Header 1
|
||||
</span></span><span class="code-line line-number" line="2"><span class="token title important"><span class="token punctuation">========</span></span>
|
||||
</span></code></pre>
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token title important">Header 2
|
||||
</span></span><span class="code-line line-number" line="2"><span class="token title important"><span class="token punctuation">--------</span></span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>块引用</h3><div class="warp-body">
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token blockquote punctuation">></span> 这是一个
|
||||
</span><span class="code-line line-number" line="2"><span class="token blockquote punctuation">></span> 块引用
|
||||
</span><span class="code-line line-number" line="3"><span class="token blockquote punctuation">></span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token blockquote punctuation">> ></span> 嵌套
|
||||
</span><span class="code-line line-number" line="5"><span class="token blockquote punctuation">> ></span> 块引用
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp" style="grid-row: span 2/span 2;"><div class="warp-header h3warp"><h3>无序列表</h3><div class="warp-body"><!--rehype:data-warp-style=grid-row: span 2/span 2;--><!--rehype:-->
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token list punctuation">*</span> Item 1
|
||||
</span><span class="code-line line-number" line="2"><span class="token list punctuation">*</span> Item 2
|
||||
</span><span class="code-line line-number" line="3"> <span class="token list punctuation">*</span> item 3a
|
||||
</span><span class="code-line line-number" line="4"> <span class="token list punctuation">*</span> item 3b
|
||||
</span></code></pre>
|
||||
<p>或者</p>
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token list punctuation">-</span> Item 1
|
||||
</span><span class="code-line line-number" line="2"><span class="token list punctuation">-</span> Item 2
|
||||
</span></code></pre>
|
||||
<p>或者</p>
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token list punctuation">+</span> Item 1
|
||||
</span><span class="code-line line-number" line="2"><span class="token list punctuation">+</span> Item 2
|
||||
</span></code></pre>
|
||||
<p>或者</p>
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token list punctuation">-</span> [ ] Checkbox off
|
||||
</span><span class="code-line line-number" line="2"><span class="token list punctuation">-</span> [x] Checkbox on
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>有序列表</h3><div class="warp-body">
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token list punctuation">1.</span> Item 1
|
||||
</span><span class="code-line line-number" line="2"><span class="token list punctuation">2.</span> Item 2
|
||||
</span><span class="code-line line-number" line="3"> a. item 3a
|
||||
</span><span class="code-line line-number" line="4"> b. item 3b
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>链接</h3><div class="warp-body">
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token url">[<span class="token content">link</span>](<span class="token url">http://google.com</span>)</span>
|
||||
</span></code></pre>
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token url">[<span class="token content">link</span>][<span class="token variable">google</span>]</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token url-reference url"><span class="token punctuation">[</span><span class="token variable">google</span><span class="token punctuation">]</span><span class="token punctuation">:</span> http://google.com</span>
|
||||
</span></code></pre>
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><http://google.com>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>强调</h3><div class="warp-body">
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token italic"><span class="token punctuation">*</span><span class="token content">斜体</span><span class="token punctuation">*</span></span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token italic"><span class="token punctuation">_</span><span class="token content">斜体</span><span class="token punctuation">_</span></span>
|
||||
</span></code></pre>
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token bold"><span class="token punctuation">**</span><span class="token content">粗体</span><span class="token punctuation">**</span></span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token bold"><span class="token punctuation">__</span><span class="token content">粗体</span><span class="token punctuation">__</span></span>
|
||||
</span></code></pre>
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token code-snippet code keyword">`内联代码`</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token strike"><span class="token punctuation">~~</span><span class="token content">删除</span><span class="token punctuation">~~</span></span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>水平线</h3><div class="warp-body">
|
||||
<p>连字符</p>
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token hr punctuation">---</span>
|
||||
</span></code></pre>
|
||||
<p>星号</p>
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token hr punctuation">***</span>
|
||||
</span></code></pre>
|
||||
<p>下划线</p>
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1">___
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>代码</h3><div class="warp-body">
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token code"><span class="token punctuation">```</span><span class="token code-language">javascript</span>
|
||||
</span></span><span class="code-line line-number" line="2"><span class="token code"><span class="token code-block language-javascript"><span class="token console class-name">console</span><span class="token punctuation">.</span><span class="token method function property-access">log</span><span class="token punctuation">(</span><span class="token string">"This is a block code"</span><span class="token punctuation">)</span></span>
|
||||
</span></span><span class="code-line line-number" line="3"><span class="token code"><span class="token punctuation">```</span></span>
|
||||
</span></code></pre>
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1">~<span class="token strike"><span class="token punctuation">~~</span><span class="token content">css
|
||||
</span></span></span><span class="code-line line-number" line="2"><span class="token strike"><span class="token content">.button { border: none; }
|
||||
</span></span></span><span class="code-line line-number" line="3"><span class="token strike"><span class="token content"></span><span class="token punctuation">~~</span></span>~
|
||||
</span></code></pre>
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"> 4 空格缩进做一个代码块
|
||||
</span></code></pre>
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>内联代码</h4><div class="warp-body">
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token code-snippet code keyword">`Inline code`</span> 周围有反引号
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp" style="grid-column: span 2/span 2;"><div class="warp-header h3warp"><h3>表格</h3><div class="warp-body"><!--rehype:data-warp-style=grid-column: span 2/span 2;--><!--rehype:-->
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token table"><span class="token table-header-row"><span class="token punctuation">|</span><span class="token table-header important"> 左栏 </span><span class="token punctuation">|</span><span class="token table-header important"> 中间栏 </span><span class="token punctuation">|</span><span class="token table-header important"> 右栏 </span><span class="token punctuation">|</span>
|
||||
</span></span></span><span class="code-line line-number" line="2"><span class="token table"><span class="token table-header-row"></span><span class="token table-line"><span class="token punctuation">|</span><span class="token punctuation">:------------</span><span class="token punctuation">|</span><span class="token punctuation">:-------------:</span><span class="token punctuation">|</span><span class="token punctuation">-------------:</span><span class="token punctuation">|</span>
|
||||
</span></span></span><span class="code-line line-number" line="3"><span class="token table"><span class="token table-line"></span><span class="token table-data-rows"><span class="token punctuation">|</span><span class="token table-data"> 单元格 1 </span><span class="token punctuation">|</span><span class="token table-data"> 居中 </span><span class="token punctuation">|</span><span class="token table-data"> $1600 </span><span class="token punctuation">|</span>
|
||||
</span></span></span><span class="code-line line-number" line="4"><span class="token table"><span class="token table-data-rows"><span class="token punctuation">|</span><span class="token table-data"> 单元格 2 </span><span class="token punctuation">|</span><span class="token table-data"> 单元格 3 </span><span class="token punctuation">|</span><span class="token table-data"> $12 </span><span class="token punctuation">|</span>
|
||||
</span></span></span></code></pre>
|
||||
<p>简单的风格</p>
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token table"><span class="token table-header-row"><span class="token table-header important"> 左栏 </span><span class="token punctuation">|</span><span class="token table-header important"> 中间栏 </span><span class="token punctuation">|</span><span class="token table-header important"> 右栏</span>
|
||||
</span></span></span><span class="code-line line-number" line="2"><span class="token table"><span class="token table-header-row"></span><span class="token table-line"><span class="token punctuation">:----------:</span><span class="token punctuation">|</span><span class="token punctuation">:-------------:</span><span class="token punctuation">|</span><span class="token punctuation">:-----------:</span>
|
||||
</span></span></span><span class="code-line line-number" line="3"><span class="token table"><span class="token table-line"></span><span class="token table-data-rows"><span class="token table-data"> 单元格 1 </span><span class="token punctuation">|</span><span class="token table-data"> 居中 </span><span class="token punctuation">|</span><span class="token table-data"> $1600</span>
|
||||
</span></span></span><span class="code-line line-number" line="4"><span class="token table"><span class="token table-data-rows"><span class="token table-data"> 单元格 2 </span><span class="token punctuation">|</span><span class="token table-data"> 单元格 3 </span><span class="token punctuation">|</span><span class="token table-data"> $12</span>
|
||||
</span></span></span></code></pre>
|
||||
<p>Markdown 表格生成器:<a href="https://tableconvert.com/">tableconvert.com</a></p>
|
||||
</div></div></div><div class="warp" style="grid-column: span 2/span 2;"><div class="warp-header h3warp"><h3>图片</h3><div class="warp-body"><!--rehype:data-warp-style=grid-column: span 2/span 2;--><!--rehype:-->
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token url"><span class="token operator">!</span>[<span class="token content">GitHub Logo</span>](<span class="token url">/images/logo.png</span>)</span>
|
||||
</span><span class="code-line line-number" line="2">
|
||||
</span><span class="code-line line-number" line="3"><span class="token url"><span class="token operator">!</span>[<span class="token content">Alt Text</span>](<span class="token url">url</span>)</span>
|
||||
</span></code></pre>
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>带链接的图片</h4><div class="warp-body">
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token url">[<span class="token content"></span>](https://github.com/)
|
||||
</span><span class="code-line line-number" line="2">
|
||||
</span><span class="code-line line-number" line="3"><span class="token url">[<span class="token content"></span>](link_url)
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h4warp"><h4>参考风格</h4><div class="warp-body">
|
||||
<pre class="language-markdown"><code class="language-markdown code-highlight"><span class="code-line line-number" line="1"><span class="token url"><span class="token operator">!</span>[<span class="token content">alt text</span>][<span class="token variable">logo</span>]</span>
|
||||
</span><span class="code-line line-number" line="2">
|
||||
</span><span class="code-line line-number" line="3"><span class="token url-reference url"><span class="token punctuation">[</span><span class="token variable">logo</span><span class="token punctuation">]</span><span class="token punctuation">:</span> /images/logo.png <span class="token string">"Logo Title"</span></span>
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h3warp"><h3>反斜杠转义</h3><div class="warp-body">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>字符</th>
|
||||
<th>转义</th>
|
||||
<th>描述</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>\</td>
|
||||
<td>\\</td>
|
||||
<td>backslash 反斜杠</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>`</td>
|
||||
<td>\`</td>
|
||||
<td>backtick 反引号</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>*</td>
|
||||
<td>\*</td>
|
||||
<td>asterisk 星号</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>_</td>
|
||||
<td>\_</td>
|
||||
<td>underscore 下划线</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{}</td>
|
||||
<td>\{}</td>
|
||||
<td>curly braces 花括号</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>[]</td>
|
||||
<td>\[]</td>
|
||||
<td>square brackets 方括号</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>()</td>
|
||||
<td>\()</td>
|
||||
<td>parentheses 圆括号</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>#</td>
|
||||
<td>\#</td>
|
||||
<td>hash mark 哈希标记</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>+</td>
|
||||
<td>\+</td>
|
||||
<td>plus sign 加号</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>-</td>
|
||||
<td>\-</td>
|
||||
<td>minus sign (hyphen) 减号(连字符)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>.</td>
|
||||
<td>\.</td>
|
||||
<td>dot 点</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>!</td>
|
||||
<td>\!</td>
|
||||
<td>exclamation mark 感叹号</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div></div></div></div></div></div></div><footer class="footer-warp"><footer class="max-container">© 2022 Kenny Wang, All rights reserved.</footer></footer></body>
|
||||
</html>
|
185
docs/toml.html
Normal file
185
docs/toml.html
Normal file
@ -0,0 +1,185 @@
|
||||
<!doctype html>
|
||||
<html lang="en" data-color-mode="dark">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>TOML 备忘清单
|
||||
& Quick Reference</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta description="这是 TOML 格式配置文件语法的快速参考备忘单。为开发人员分享快速参考备忘单。">
|
||||
<meta keywords="Quick,Reference">
|
||||
<link rel="stylesheet" href="../style/style.css">
|
||||
</head>
|
||||
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em"><path opacity=".5" d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="white"></path><path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#cbd5e1"></path><path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#292D32"></path></svg><span class="title">Quick Reference</span></a><div class="menu"><a href="https://github.com/jaywcjlove/reference/blob/main/docs/toml.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="warp max-container"><header class="warp-header h1warp"><h1>TOML 备忘清单</h1><div class="warp-body">
|
||||
<p>这是 TOML 格式配置文件语法的快速参考备忘单。</p>
|
||||
</div></header><div class="h1warp-body"><div class="warp"><div class="warp-header h2warp"><h2>入门</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>介绍</h3><div class="warp-body">
|
||||
<p><a href="https://toml.io/en/">TOML</a> 是一种最小的配置文件格式,由于明显的语义而易于阅读。</p>
|
||||
<ul>
|
||||
<li><a href="https://toml.io/en/latest">Document</a> <em>(toml.io)</em></li>
|
||||
<li><a href="https://learnxinyminutes.com/docs/toml/">Learn X in Y minutes</a> <em>(learnxinyminutes.com)</em></li>
|
||||
</ul>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>示例</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token key property">bool</span> <span class="token punctuation">=</span> <span class="token boolean">true</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">date</span> <span class="token punctuation">=</span> <span class="token date number">2006-05-27T07:32:00Z</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token key property">string</span> <span class="token punctuation">=</span> <span class="token string">"hello"</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token key property">number</span> <span class="token punctuation">=</span> <span class="token number">42</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token key property">float</span> <span class="token punctuation">=</span> <span class="token number">3.14</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token key property">scientificNotation</span> <span class="token punctuation">=</span> <span class="token number">1e+12</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>注释</h3><div class="warp-body">
|
||||
<pre class="language-yaml"><code class="language-yaml code-highlight"><span class="code-line line-number" line="1"><span class="token comment"># A single line comment example</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment"># block level comment example</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment"># 注释行 1</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment"># 注释行 2</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token comment"># 注释行 3</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>整数</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token key property">int1</span> <span class="token punctuation">=</span> <span class="token number">+42</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">int2</span> <span class="token punctuation">=</span> <span class="token number">0</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token key property">int3</span> <span class="token punctuation">=</span> <span class="token number">-21</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token key property">integerRange</span> <span class="token punctuation">=</span> <span class="token number">64</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>浮点数</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token key property">float2</span> <span class="token punctuation">=</span> <span class="token number">3.1415</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">float4</span> <span class="token punctuation">=</span> <span class="token number">5e+22</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token key property">float7</span> <span class="token punctuation">=</span> <span class="token number">6.626e-34</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>布尔值</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token key property">bool1</span> <span class="token punctuation">=</span> <span class="token boolean">true</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">bool2</span> <span class="token punctuation">=</span> <span class="token boolean">false</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token key property">boolMustBeLowercase</span> <span class="token punctuation">=</span> <span class="token boolean">true</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>时间日期</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token key property">date1</span> <span class="token punctuation">=</span> <span class="token date number">1989-05-27T07:32:00Z</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">date2</span> <span class="token punctuation">=</span> <span class="token date number">1989-05-26T15:32:00-07:00</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token key property">date3</span> <span class="token punctuation">=</span> <span class="token date number">1989-05-27T07:32:00</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token key property">date4</span> <span class="token punctuation">=</span> <span class="token date number">1989-05-27</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token key property">time1</span> <span class="token punctuation">=</span> <span class="token date number">07:32:00</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token key property">time2</span> <span class="token punctuation">=</span> <span class="token date number">00:32:00.999999</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>字符串</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token key property">str1</span> <span class="token punctuation">=</span> <span class="token string">"I'm a string."</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">str2</span> <span class="token punctuation">=</span> <span class="token string">"You can \"quote\" me."</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token key property">str3</span> <span class="token punctuation">=</span> <span class="token string">"Name\tJos\u00E9\nLoc\tSF."</span>
|
||||
</span></code></pre>
|
||||
<p>See: <a href="#toml-strings">Strings</a></p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Table</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">[</span><span class="token table class-name">owner</span><span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">name</span> <span class="token punctuation">=</span> <span class="token string">"Tom Preston-Werner"</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token key property">dob</span> <span class="token punctuation">=</span> <span class="token date number">1979-05-27T07:32:00-08:00</span>
|
||||
</span></code></pre>
|
||||
<p>See: <a href="#toml-tables">Tables</a></p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>数组</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token key property">array1</span> <span class="token punctuation">=</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">array2</span> <span class="token punctuation">=</span> <span class="token punctuation">[</span><span class="token string">"Commas"</span><span class="token punctuation">,</span> <span class="token string">"are"</span><span class="token punctuation">,</span> <span class="token string">"delimiter"</span><span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token key property">array3</span> <span class="token punctuation">=</span> <span class="token punctuation">[</span><span class="token number">8001</span><span class="token punctuation">,</span> <span class="token number">8001</span><span class="token punctuation">,</span> <span class="token number">8002</span><span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp" style="grid-column: span 2/span 2;"><div class="warp-header h3warp"><h3>友好数组</h3><div class="warp-body"><!--rehype:data-warp-style=grid-column: span 2/span 2;--><!--rehype:-->
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token key property">array1</span> <span class="token punctuation">=</span> <span class="token punctuation">[</span> <span class="token string">"Don't mix"</span><span class="token punctuation">,</span> <span class="token string">"different"</span><span class="token punctuation">,</span> <span class="token string">"types"</span> <span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">array2</span> <span class="token punctuation">=</span> <span class="token punctuation">[</span> <span class="token punctuation">[</span> <span class="token number">1.2</span><span class="token punctuation">,</span> <span class="token number">2.4</span> <span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">"all"</span><span class="token punctuation">,</span> <span class="token string">'strings'</span><span class="token punctuation">,</span> <span class="token string">"""are the same"""</span><span class="token punctuation">,</span> <span class="token string">'''type'''</span><span class="token punctuation">]</span> <span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token key property">array3</span> <span class="token punctuation">=</span> <span class="token punctuation">[</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token string">"Whitespace"</span><span class="token punctuation">,</span> <span class="token string">"is"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token string">"ignored"</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>TOML 字符串</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>多行字符串</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token key property">multiLineString</span> <span class="token punctuation">=</span> <span class="token string">"""
|
||||
</span></span><span class="code-line line-number" line="2"><span class="token string">Multi-line basic strings are surrounded
|
||||
</span></span><span class="code-line line-number" line="3"><span class="token string">by three quotation marks on each side
|
||||
</span></span><span class="code-line line-number" line="4"><span class="token string">and allow newlines.
|
||||
</span></span><span class="code-line line-number" line="5"><span class="token string">"""</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>文字字符串</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token key property">path</span> <span class="token punctuation">=</span> <span class="token string">'C:\Users\nodejs\templates'</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">path2</span> <span class="token punctuation">=</span> <span class="token string">'\\User\admin$\system32'</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token key property">quoted</span> <span class="token punctuation">=</span> <span class="token string">'Tom "Dubs" Preston-Werner'</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token key property">regex</span> <span class="token punctuation">=</span> <span class="token string">'<\i\c*\s*>'</span>
|
||||
</span></code></pre>
|
||||
<p>用单引号括起来。不允许转义。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>多行文字字符串</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token key property">re</span> <span class="token punctuation">=</span> <span class="token string">'''\d{2} apps is t[wo]o many'''</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">lines</span> <span class="token punctuation">=</span> <span class="token string">'''
|
||||
</span></span><span class="code-line line-number" line="3"><span class="token string">The first newline is
|
||||
</span></span><span class="code-line line-number" line="4"><span class="token string">trimmed in raw strings.
|
||||
</span></span><span class="code-line line-number" line="5"><span class="token string">All other whitespace
|
||||
</span></span><span class="code-line line-number" line="6"><span class="token string">is preserved.
|
||||
</span></span><span class="code-line line-number" line="7"><span class="token string">'''</span>
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>TOML Tables</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>基本的</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">[</span><span class="token table class-name">name</span><span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">foo</span> <span class="token punctuation">=</span> <span class="token number">1</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token key property">bar</span> <span class="token punctuation">=</span> <span class="token number">2</span>
|
||||
</span></code></pre>
|
||||
<p><code>foo</code> 和 <code>bar</code> 是名为<code>name</code> 的表中的键</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>嵌套</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">[</span><span class="token table class-name">table1</span><span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token key property">foo</span> <span class="token punctuation">=</span> <span class="token string">"bar"</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">[</span><span class="token table class-name">table1.nested_table</span><span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token key property">baz</span> <span class="token punctuation">=</span> <span class="token string">"bat"</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp row-span-2"><div class="warp-header h3warp"><h3>类数组</h3><div class="warp-body"><!--rehype:warp-class=row-span-2--><!--rehype:-->
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token table class-name">comments</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">author</span> <span class="token punctuation">=</span> <span class="token string">"Nate"</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token key property">text</span> <span class="token punctuation">=</span> <span class="token string">"Great Article!"</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token table class-name">comments</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token key property">author</span> <span class="token punctuation">=</span> <span class="token string">"Anonymous"</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token key property">text</span> <span class="token punctuation">=</span> <span class="token string">"Love it!"</span>
|
||||
</span></code></pre>
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>↓ 等效的 JSON</h4><div class="warp-body">
|
||||
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token property">"comments"</span> <span class="token operator">:</span> <span class="token punctuation">[</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token property">"author"</span> <span class="token operator">:</span> <span class="token string">"Nate"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token property">"text"</span> <span class="token operator">:</span> <span class="token string">"Great Article!"</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token property">"author"</span> <span class="token operator">:</span> <span class="token string">"Anonymous"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token property">"text"</span> <span class="token operator">:</span> <span class="token string">"Love It!"</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="12"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h3warp"><h3>点分隔</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">[</span><span class="token table class-name">dog."tater.man"</span><span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">type</span> <span class="token punctuation">=</span> <span class="token string">"pug"</span>
|
||||
</span></code></pre>
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>↓ 等效的 JSON</h4><div class="warp-body">
|
||||
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token property">"dog"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token property">"tater.man"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"pug"</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h3warp"><h3>多嵌套</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">[</span><span class="token table class-name">foo.bar.baz</span><span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">bat</span> <span class="token punctuation">=</span> <span class="token string">"hi"</span>
|
||||
</span></code></pre>
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>↓ 等效的 JSON</h4><div class="warp-body">
|
||||
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token property">"foo"</span> <span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token property">"bar"</span> <span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token property">"baz"</span> <span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token property">"bat"</span> <span class="token operator">:</span> <span class="token string">"hi"</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h3warp"><h3>忽略空格</h3><div class="warp-body">
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">[</span><span class="token table class-name">a.b.c</span><span class="token punctuation">]</span> <span class="token comment"># this is best practice</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token punctuation">[</span> <span class="token table class-name">d.e.f</span> <span class="token punctuation">]</span> <span class="token comment"># same as [d.e.f]</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">[</span> <span class="token table class-name">g . h .i</span> <span class="token punctuation">]</span> <span class="token comment"># same as [g.h.i]</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token punctuation">[</span> <span class="token table class-name">j . "ʞ" .'l'</span> <span class="token punctuation">]</span> <span class="token comment"># same as [j."ʞ".'l']</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp col-span-2"><div class="warp-header h3warp"><h3>Inline Table</h3><div class="warp-body"><!--rehype:warp-class=col-span-2--><!--rehype:-->
|
||||
<pre class="language-toml"><code class="language-toml code-highlight"><span class="code-line line-number" line="1"><span class="token key property">name</span> <span class="token punctuation">=</span> <span class="token punctuation">{</span> <span class="token key property">first</span> <span class="token punctuation">=</span> <span class="token string">"Tom"</span><span class="token punctuation">,</span> <span class="token key property">last</span> <span class="token punctuation">=</span> <span class="token string">"Preston-Werner"</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token key property">point</span> <span class="token punctuation">=</span> <span class="token punctuation">{</span> <span class="token key property">x</span> <span class="token punctuation">=</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token key property">y</span> <span class="token punctuation">=</span> <span class="token number">2</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token key property">animal</span> <span class="token punctuation">=</span> <span class="token punctuation">{</span> <span class="token key property">type.name</span> <span class="token punctuation">=</span> <span class="token string">"pug"</span> <span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
|
||||
</div></div></div></div></div></div></div><footer class="footer-warp"><footer class="max-container">© 2022 Kenny Wang, All rights reserved.</footer></footer></body>
|
||||
</html>
|
904
docs/typescript.html
Normal file
904
docs/typescript.html
Normal file
@ -0,0 +1,904 @@
|
||||
<!doctype html>
|
||||
<html lang="en" data-color-mode="dark">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>TypeScript 备忘清单
|
||||
& Quick Reference</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta description="包含最重要基础、泛型、方法、class 等 TypeScript 强类型编程语言语法的快速参考备忘单。初学者的完整快速参考。为开发人员分享快速参考备忘单。">
|
||||
<meta keywords="Quick,Reference">
|
||||
<link rel="stylesheet" href="../style/style.css">
|
||||
</head>
|
||||
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em"><path opacity=".5" d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="white"></path><path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#cbd5e1"></path><path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#292D32"></path></svg><span class="title">Quick Reference</span></a><div class="menu"><a href="https://github.com/jaywcjlove/reference/blob/main/docs/typescript.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="warp max-container"><header class="warp-header h1warp"><h1>TypeScript 备忘清单</h1><div class="warp-body">
|
||||
<p>包含最重要基础、泛型、方法、class 等 TypeScript 强类型编程语言语法的快速参考备忘单。初学者的完整快速参考。</p>
|
||||
</div></header><div class="h1warp-body"><div class="warp"><div class="warp-header h2warp"><h2>入门 Interface</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>介绍</h3><div class="warp-body">
|
||||
<p>TypeScript 是具有类型语法的 JavaScript。Interface 是为了匹配它们的运行时行为而构建的。</p>
|
||||
<ul>
|
||||
<li><a href="./javascript.html">JavaScript 备忘清单</a></li>
|
||||
<li><a href="https://www.typescriptlang.org/">TypeScript 官网</a></li>
|
||||
</ul>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>内置类型基元</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token builtin">boolean</span><span class="token punctuation">,</span> <span class="token builtin">string</span><span class="token punctuation">,</span> <span class="token builtin">number</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">undefined</span><span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token builtin">any</span><span class="token punctuation">,</span> <span class="token builtin">unknown</span><span class="token punctuation">,</span> <span class="token builtin">never</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token keyword">void</span><span class="token punctuation">,</span> bigint<span class="token punctuation">,</span> <span class="token builtin">symbol</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>常见的内置 JS 对象</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1">Date<span class="token punctuation">,</span> Error<span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token builtin">Array</span><span class="token punctuation">,</span> Map<span class="token punctuation">,</span> Set<span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="3">Regexp<span class="token punctuation">,</span> <span class="token builtin">Promise</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>内置</h3><div class="warp-body">
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>类型字面量</h4><div class="warp-body">
|
||||
<p>Object:</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span> field<span class="token operator">:</span> <span class="token builtin">string</span> <span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>Function:</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">(</span>arg<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token builtin">string</span>
|
||||
</span></code></pre>
|
||||
<p>Arrays:</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token builtin">string</span><span class="token punctuation">[</span><span class="token punctuation">]</span> or <span class="token builtin">Array</span><span class="token operator"><</span><span class="token builtin">string</span><span class="token operator">></span>
|
||||
</span></code></pre>
|
||||
<p>Tuple:</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">[</span><span class="token builtin">string</span><span class="token punctuation">,</span> <span class="token builtin">number</span><span class="token punctuation">]</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h4warp"><h4>避免</h4><div class="warp-body">
|
||||
<pre><code class="code-highlight"><span class="code-line line-number" line="1">Object, String, Number, Boolean
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp col-span-2"><div class="warp-header h3warp"><h3>通用语法</h3><div class="warp-body"><!--rehype:warp-class=col-span-2--><!--rehype:-->
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token comment">/** 可选择从现有接口或类型(Response, HTTPAble)中获取属性 */</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">interface</span> <span class="token class-name">JSONResponse</span> <span class="token keyword">extends</span> <span class="token class-name">Response</span><span class="token punctuation">,</span> HTTPAble <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="3"> version<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token comment">// 👇 附加在编辑器中显示的 JSDoc 注释</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token comment">/** In bytes */</span>
|
||||
</span><span class="code-line line-number" line="6"> payloadSize<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token comment">// 👇 此属性可能不在对象上</span>
|
||||
</span><span class="code-line line-number" line="8"> outOfStock<span class="token operator">?</span><span class="token operator">:</span> <span class="token builtin">boolean</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token comment">// 👇 这是描述作为函数的属性的两种方法</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token function-variable function">update</span><span class="token operator">:</span> <span class="token punctuation">(</span>retryTimes<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">void</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token function">update</span><span class="token punctuation">(</span>retryTimes<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token keyword">void</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="12"> <span class="token comment">// 👇 你可以通过 () 调用这个对象 -(JS中的函数是可以调用的对象)</span>
|
||||
</span><span class="code-line line-number" line="13"> <span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> JSONResponse
|
||||
</span><span class="code-line line-number" line="14"> <span class="token comment">// 👇 您可以在此 Interface 描述的对象上使用 new</span>
|
||||
</span><span class="code-line line-number" line="15"> <span class="token class-name"><span class="token keyword">new</span></span><span class="token punctuation">(</span>s<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">)</span><span class="token operator">:</span> JSONResponse<span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="16"> <span class="token comment">// 👇 任何未描述的属性都假定存在,并且所有属性必须是数字</span>
|
||||
</span><span class="code-line line-number" line="17"> <span class="token punctuation">[</span>key<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">]</span><span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="18"> <span class="token comment">// 👇 告诉 TypeScript 一个属性不能被改变</span>
|
||||
</span><span class="code-line line-number" line="19"> <span class="token keyword">readonly</span> body<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="20"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp row-span-2"><div class="warp-header h3warp"><h3>泛型</h3><div class="warp-body"><!--rehype:warp-class=row-span-2-->
|
||||
<p>声明一个可以在你的 Interface 中改变的类型</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">interface</span> <span class="token class-name">APICall<span class="token operator"><</span>Response<span class="token operator">></span></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> data<span class="token operator">:</span> Response
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>用法</h4><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> api<span class="token operator">:</span> APICall<span class="token operator"><</span>ArtworkCall<span class="token operator">></span> <span class="token operator">=</span> <span class="token operator">...</span>
|
||||
</span><span class="code-line line-number" line="2">
|
||||
</span><span class="code-line line-number" line="3">api<span class="token punctuation">.</span>data <span class="token comment">// Artwork</span>
|
||||
</span></code></pre>
|
||||
<p>您可以通过 <code>extends</code> 关键字限制泛型参数接受的类型。</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">interface</span> <span class="token class-name">APICall<span class="token operator"><</span>Response <span class="token keyword">extends</span> <span class="token punctuation">{</span> status<span class="token operator">:</span> <span class="token builtin">number</span> <span class="token punctuation">}</span><span class="token operator">></span></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> data<span class="token operator">:</span> Response
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="4">
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">const</span> api<span class="token operator">:</span> APICall<span class="token operator"><</span>ArtworkCall<span class="token operator">></span> <span class="token operator">=</span> <span class="token operator">...</span>
|
||||
</span><span class="code-line line-number" line="6">
|
||||
</span><span class="code-line line-number" line="7">api<span class="token punctuation">.</span>data<span class="token punctuation">.</span>status
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h3warp"><h3>重载</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">interface</span> <span class="token class-name">Expect</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token punctuation">(</span>matcher<span class="token operator">:</span> <span class="token builtin">boolean</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token function">string</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token punctuation">(</span>matcher<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token builtin">boolean</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>一个可调用 Interface 可以对不同的参数集有多个定义。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>类一致性</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">interface</span> <span class="token class-name">Syncable</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token function">sync</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token keyword">void</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token keyword">class</span> <span class="token class-name">Account</span> <span class="token keyword">implements</span> <span class="token class-name">Syncable</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>您可以通过实现确保类 class 符合 Interface。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Get & Set</h3><div class="warp-body">
|
||||
<p>对象可以有自定义的 <code>getter</code> 或 <code>setter</code>。</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">interface</span> <span class="token class-name">Ruler</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token keyword">get</span> <span class="token function">size</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token builtin">number</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token keyword">set</span> <span class="token function">size</span><span class="token punctuation">(</span>value<span class="token operator">:</span> <span class="token builtin">number</span> <span class="token operator">|</span> <span class="token builtin">string</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>用法</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> r<span class="token operator">:</span> Ruler <span class="token operator">=</span> <span class="token operator">...</span>
|
||||
</span><span class="code-line line-number" line="2">r<span class="token punctuation">.</span>size <span class="token operator">=</span> <span class="token number">12</span>
|
||||
</span><span class="code-line line-number" line="3">r<span class="token punctuation">.</span>size <span class="token operator">=</span> <span class="token string">"36"</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>通过合并扩展</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">interface</span> <span class="token class-name">APICall</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> data<span class="token operator">:</span> Response
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="4">
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">interface</span> <span class="token class-name">APICall</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="6"> error<span class="token operator">?</span><span class="token operator">:</span> Error
|
||||
</span><span class="code-line line-number" line="7"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>Interface 被合并,多个声明将向类型定义添加新字段。</p>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>Type</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp row-span-2"><div class="warp-header h3warp"><h3>Type vs Interface</h3><div class="warp-body"><!--rehype:warp-class=row-span-2-->
|
||||
<ul>
|
||||
<li>Interface 只能描述对象形状</li>
|
||||
<li>Interface 可以通过多次声明来扩展</li>
|
||||
<li>在性能关键 Type 中,Interface 比较检查可以更快。</li>
|
||||
</ul>
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>把类型想象成变量</h4><div class="warp-body">
|
||||
<p>就像您如何在不同范围内创建具有相同名称的变量一样,type 具有相似的语义。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h4warp"><h4>使用实用程序类型构建</h4><div class="warp-body">
|
||||
<p>TypeScript 包含许多全局类型,它们将帮助您在类型系统中完成常见任务。检查他们的网站。</p>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h3warp"><h3>原始类型</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name">SanitizedInput</span> <span class="token operator">=</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">type</span> <span class="token class-name">MissingNo</span> <span class="token operator">=</span> <span class="token number">404</span><span class="token punctuation">;</span>
|
||||
</span></code></pre>
|
||||
<p>主要用于文档</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>对象字面类型</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name">Location</span> <span class="token operator">=</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> x<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"> y<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>联合类型</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name">Size</span> <span class="token operator">=</span> <span class="token string">"small"</span> <span class="token operator">|</span> <span class="token string">"medium"</span> <span class="token operator">|</span> <span class="token string">"large"</span>
|
||||
</span></code></pre>
|
||||
<p>描述许多选项中的一个类型,例如已知字符串的列表。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>交叉口类型</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name">Location</span> <span class="token operator">=</span> <span class="token punctuation">{</span> x<span class="token operator">:</span> <span class="token builtin">number</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token operator">&</span> <span class="token punctuation">{</span> y<span class="token operator">:</span> <span class="token builtin">number</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment">// { x: number, y: number }</span>
|
||||
</span></code></pre>
|
||||
<p>一种合并/扩展类型的方法</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>从值类型</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> data <span class="token operator">=</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">type</span> <span class="token class-name">Data</span> <span class="token operator">=</span> <span class="token keyword">typeof</span> data
|
||||
</span></code></pre>
|
||||
<p>通过 typeof 运算符重用来自现有 JavaScript 运行时值的类型。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>从函数返回类型</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> <span class="token function-variable function">createFixtures</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">type</span> <span class="token class-name">Fixtures</span> <span class="token operator">=</span> ReturnType<span class="token operator"><</span><span class="token keyword">typeof</span> createFixtures<span class="token operator">></span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token keyword">function</span> <span class="token function">test</span><span class="token punctuation">(</span>fixture<span class="token operator">:</span> Fixtures<span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>将函数的返回值重新用作类型。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>从模块类型</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> data<span class="token operator">:</span> <span class="token keyword">import</span><span class="token punctuation">(</span><span class="token string">"./data"</span><span class="token punctuation">)</span><span class="token punctuation">.</span>data
|
||||
</span></code></pre>
|
||||
<p>这些功能非常适合构建库、描述现有的 JavaScript 代码,您可能会发现在大多数 TypeScript 应用程序中很少使用它们。</p>
|
||||
</div></div></div><div class="warp col-span-2"><div class="warp-header h3warp"><h3>对象字面量语法</h3><div class="warp-body"><!--rehype:warp-class=col-span-2--><!--rehype:-->
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name">JSONResponse</span> <span class="token operator">=</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> version<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span> <span class="token comment">// 字段</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token comment">/** In bytes */</span> <span class="token comment">// 附加文档</span>
|
||||
</span><span class="code-line line-number" line="4"> payloadSize<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="5"> outOfStock<span class="token operator">?</span><span class="token operator">:</span> <span class="token builtin">boolean</span><span class="token punctuation">;</span> <span class="token comment">// 可选的</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token function-variable function">update</span><span class="token operator">:</span> <span class="token punctuation">(</span>retryTimes<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">void</span><span class="token punctuation">;</span> <span class="token comment">// 箭头函数字段</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token function">update</span><span class="token punctuation">(</span>retryTimes<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token keyword">void</span><span class="token punctuation">;</span> <span class="token comment">// 函数</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> JSONResponse <span class="token comment">// 类型是可调用的</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token punctuation">[</span>key<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">]</span><span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span> <span class="token comment">// 接受任何索引</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token keyword">new</span> <span class="token punctuation">(</span>s<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">)</span><span class="token operator">:</span> JSONResponse<span class="token punctuation">;</span> <span class="token comment">// new 对象</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token keyword">readonly</span> body<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span> <span class="token comment">// 只读属性</span>
|
||||
</span><span class="code-line line-number" line="12"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>用于节省空间的 Terser,请参阅 Interface 备忘清单了解更多信息,除了“static”匹配之外的所有内容。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>映射类型</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name">Artist</span> <span class="token operator">=</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> name<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">,</span> bio<span class="token operator">:</span> <span class="token builtin">string</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="4">
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">type</span> <span class="token class-name">Subscriber<span class="token operator"><</span>Type<span class="token operator">></span></span> <span class="token operator">=</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token punctuation">[</span>Property <span class="token keyword">in</span> <span class="token keyword">keyof</span> Type<span class="token punctuation">]</span><span class="token operator">:</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token punctuation">(</span>newValue<span class="token operator">:</span> Type<span class="token punctuation">[</span>Property<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">void</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token keyword">type</span> <span class="token class-name">ArtistSub</span> <span class="token operator">=</span> Subscriber<span class="token operator"><</span>Artist<span class="token operator">></span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token comment">// { name: (nv: string) => </span>
|
||||
</span><span class="code-line line-number" line="11"><span class="token comment">// void, bio: (nv: string) => void }</span>
|
||||
</span></code></pre>
|
||||
<p>类似于类型系统的映射语句,允许输入类型更改新类型的结构。</p>
|
||||
</div></div></div><div class="warp col-span-3"><div class="warp-header h3warp"><h3>模板联合类型</h3><div class="warp-body"><!--rehype:warp-class=col-span-3--><!--rehype:-->
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name">SupportedLangs</span> <span class="token operator">=</span> <span class="token string">"en"</span> <span class="token operator">|</span> <span class="token string">"pt"</span> <span class="token operator">|</span> <span class="token string">"zh"</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">type</span> <span class="token class-name">FooterLocaleIDs</span> <span class="token operator">=</span> <span class="token string">"header"</span> <span class="token operator">|</span> <span class="token string">"footer"</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token keyword">type</span> <span class="token class-name">AllLocaleIDs</span> <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>SupportedLangs<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">_</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>FooterLocaleIDs<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">_id</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4">
|
||||
</span><span class="code-line line-number" line="5"><span class="token comment">// "en_header_id" | "en_footer_id"</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token comment">// | "pt_header_id" | "pt_footer_id"</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token comment">// | "zh_header_id" | "zh_footer_id"</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp col-span-3"><div class="warp-header h3warp"><h3>条件类型</h3><div class="warp-body"><!--rehype:warp-class=col-span-3--><!--rehype:-->
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name">HasFourLegs<span class="token operator"><</span>Animal<span class="token operator">></span></span> <span class="token operator">=</span> Animal <span class="token keyword">extends</span> <span class="token punctuation">{</span> legs<span class="token operator">:</span> <span class="token number">4</span> <span class="token punctuation">}</span> <span class="token operator">?</span> Animal <span class="token operator">:</span> <span class="token builtin">never</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">type</span> <span class="token class-name">Animals</span> <span class="token operator">=</span> Bird <span class="token operator">|</span> Dog <span class="token operator">|</span> Ant <span class="token operator">|</span> Wolf<span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token keyword">type</span> <span class="token class-name">FourLegs</span> <span class="token operator">=</span> HasFourLegs<span class="token operator"><</span>Animals<span class="token operator">></span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment">// Dog | Wolf</span>
|
||||
</span></code></pre>
|
||||
<p>在类型系统中充当“if 语句”。 通过泛型创建,然后通常用于减少类型联合中的选项数量。</p>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>控制流动分析</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp row-span-3"><div class="warp-header h3warp"><h3>If 声明</h3><div class="warp-body"><!--rehype:warp-class=row-span-3-->
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>typeof(用于原语)</h4><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> input <span class="token operator">=</span> <span class="token function">getUserInput</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="2">input <span class="token comment">// string | number</span>
|
||||
</span><span class="code-line line-number" line="3">
|
||||
</span><span class="code-line line-number" line="4"><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">typeof</span> input <span class="token operator">===</span> <span class="token string">'string'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="5"> input <span class="token comment">// string</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h4warp"><h4>对象中的“property”(对于对象)</h4><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> input <span class="token operator">=</span> <span class="token function">getUserInput</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="2">input <span class="token comment">// string | { error: ... }</span>
|
||||
</span><span class="code-line line-number" line="3">
|
||||
</span><span class="code-line line-number" line="4"><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token string">'error'</span> <span class="token keyword">in</span> input<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="5"> input <span class="token comment">// { error: ... }</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h4warp"><h4>instanceof(用于类)</h4><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> input <span class="token operator">=</span> <span class="token function">getUserInput</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="2"> input <span class="token comment">// number | number[]</span>
|
||||
</span><span class="code-line line-number" line="3">
|
||||
</span><span class="code-line line-number" line="4"><span class="token keyword">if</span> <span class="token punctuation">(</span>input <span class="token keyword">instanceof</span> <span class="token class-name"><span class="token builtin">Array</span></span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="5"> input <span class="token comment">// number[]</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h4warp"><h4>类型保护功能(适用于任何东西)</h4><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> input <span class="token operator">=</span> <span class="token function">getUserInput</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="2"> input <span class="token comment">// number | number[]</span>
|
||||
</span><span class="code-line line-number" line="3">
|
||||
</span><span class="code-line line-number" line="4"><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token builtin">Array</span><span class="token punctuation">.</span><span class="token function">isArray</span><span class="token punctuation">(</span>input<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="5"> input <span class="token comment">// number[]</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp row-span-3"><div class="warp-header h3warp"><h3>任务</h3><div class="warp-body"><!--rehype:warp-class=row-span-3--><!--rehype:-->
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> data1 <span class="token operator">=</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> name<span class="token operator">:</span> <span class="token string">"Zagreus"</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment">// typeof data1 = {</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token comment">// name: string</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token comment">// }</span>
|
||||
</span></code></pre>
|
||||
<p>使用 <code>as const</code> 缩小类型</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> data2 <span class="token operator">=</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> name<span class="token operator">:</span> <span class="token string">"Zagreus"</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span> <span class="token keyword">as</span> <span class="token keyword">const</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment">// typeof data1 = {</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token comment">// name: 'Zagreus'</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token comment">// }</span>
|
||||
</span></code></pre>
|
||||
<p>跟踪相关变量</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> response <span class="token operator">=</span> <span class="token function">getResponse</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">const</span> isSuccessResponse <span class="token operator">=</span>
|
||||
</span><span class="code-line line-number" line="3"> res <span class="token keyword">instanceof</span> <span class="token class-name">SuccessResponse</span>
|
||||
</span><span class="code-line line-number" line="4">
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">if</span> <span class="token punctuation">(</span>isSuccessResponse<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="6"> res<span class="token punctuation">.</span>data <span class="token comment">// SuccessResponse</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>重新分配更新类型</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">let</span> data<span class="token operator">:</span> <span class="token builtin">string</span> <span class="token operator">|</span> <span class="token builtin">number</span> <span class="token operator">=</span> <span class="token operator">...</span>
|
||||
</span><span class="code-line line-number" line="2">data <span class="token comment">// string | number</span>
|
||||
</span><span class="code-line line-number" line="3">data <span class="token operator">=</span> <span class="token string">"Hello"</span>
|
||||
</span><span class="code-line line-number" line="4">data <span class="token comment">// string</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>关键点</h3><div class="warp-body">
|
||||
<p>CFA 几乎总是采用联合,并根据代码中的逻辑减少联合内的类型数量。</p>
|
||||
<p>大多数时候 CFA 在自然 JavaScript 布尔逻辑中工作,但是有一些方法可以定义您自己的函数,这些函数会影响 TypeScript 如何缩小类型。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>表达式</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> input <span class="token operator">=</span> <span class="token function">getUserInput</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="2">input <span class="token comment">// string | number</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token keyword">const</span> inputLength <span class="token operator">=</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token punctuation">(</span><span class="token keyword">typeof</span> input <span class="token operator">===</span> <span class="token string">"string"</span> <span class="token operator">&&</span> input<span class="token punctuation">.</span>length<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token operator">||</span> input
|
||||
</span><span class="code-line line-number" line="6"> <span class="token comment">// input: string</span>
|
||||
</span></code></pre>
|
||||
<p>在进行布尔运算时,缩窄也发生在与代码相同的行上</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>可识别联合</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name">Responses</span> <span class="token operator">=</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token operator">|</span> <span class="token punctuation">{</span> status<span class="token operator">:</span> <span class="token number">200</span><span class="token punctuation">,</span> data<span class="token operator">:</span> <span class="token builtin">any</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token operator">|</span> <span class="token punctuation">{</span> status<span class="token operator">:</span> <span class="token number">301</span><span class="token punctuation">,</span> to<span class="token operator">:</span> <span class="token builtin">string</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token operator">|</span> <span class="token punctuation">{</span> status<span class="token operator">:</span> <span class="token number">400</span><span class="token punctuation">,</span> error<span class="token operator">:</span> Error <span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>用法</h4><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> response <span class="token operator">=</span> <span class="token function">getResponse</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="2">response <span class="token comment">// Responses</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token keyword">switch</span><span class="token punctuation">(</span>response<span class="token punctuation">.</span>status<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token keyword">case</span> <span class="token number">200</span><span class="token operator">:</span> <span class="token keyword">return</span> response<span class="token punctuation">.</span>data
|
||||
</span><span class="code-line line-number" line="5"> <span class="token keyword">case</span> <span class="token number">301</span><span class="token operator">:</span> <span class="token keyword">return</span> <span class="token function">redirect</span><span class="token punctuation">(</span>response<span class="token punctuation">.</span>to<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token keyword">case</span> <span class="token number">400</span><span class="token operator">:</span> <span class="token keyword">return</span> response<span class="token punctuation">.</span>error
|
||||
</span><span class="code-line line-number" line="7"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h3warp"><h3>断言函数</h3><div class="warp-body">
|
||||
<p>描述影响当前范围的 CFA 更改的函数,因为它抛出而不是返回 false。</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">function</span> <span class="token function">assertResponse</span><span class="token punctuation">(</span>obj<span class="token operator">:</span> <span class="token builtin">any</span><span class="token punctuation">)</span><span class="token operator">:</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token keyword">asserts</span> obj <span class="token keyword">is</span> SuccessResponse <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token punctuation">(</span>obj <span class="token keyword">instanceof</span> <span class="token class-name">SuccessResponse</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">Error</span><span class="token punctuation">(</span><span class="token string">'Not a success!'</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>用法</h4><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> res <span class="token operator">=</span> <span class="token function">getResponse</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span>
|
||||
</span><span class="code-line line-number" line="2">res <span class="token comment">// SuccessResponse | ErrorResponse</span>
|
||||
</span><span class="code-line line-number" line="3">
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment">// 断言函数改变当前作用域或抛出</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token function">assertResponse</span><span class="token punctuation">(</span>res<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="6">
|
||||
</span><span class="code-line line-number" line="7">res <span class="token comment">// SuccessResponse</span>
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>Class</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>创建类实例</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">class</span> <span class="token class-name"><span class="token constant">ABC</span></span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">const</span> abc <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name"><span class="token constant">ABC</span></span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>新 ABC 的参数来自构造函数。</p>
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>private x 与 #private</h4><div class="warp-body">
|
||||
<p>前缀 private 是一个仅类型的添加,在运行时没有任何影响。 在以下情况下,类之外的代码可以进入项目:</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">class</span> <span class="token class-name">Bag</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token keyword">private</span> item<span class="token operator">:</span> <span class="token builtin">any</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>Vs #private 是运行时私有的,并且在 JavaScript 引擎内部强制执行,它只能在类内部访问:</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">class</span> <span class="token class-name">Bag</span> <span class="token punctuation">{</span> #item<span class="token operator">:</span> <span class="token builtin">any</span> <span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h4warp"><h4>Class 上的 “this”</h4><div class="warp-body">
|
||||
<p>函数内部‘this’的值取决于函数的调用方式。 不能保证始终是您可能在其他语言中使用的类实例。</p>
|
||||
<p>您可以使用“此参数”、使用绑定功能或箭头功能来解决问题。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h4warp"><h4>类型和值</h4><div class="warp-body">
|
||||
<p>一个类既可以用作类型也可以用作值。</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> a<span class="token operator">:</span>Bag <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Bag</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>所以,小心不要这样做:</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">class</span> <span class="token class-name"><span class="token constant">C</span></span> <span class="token keyword">implements</span> <span class="token class-name">Bag</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div></div></div><div class="warp col-span-2"><div class="warp-header h3warp"><h3>通用语法</h3><div class="warp-body"><!--rehype:warp-class=col-span-2--><!--rehype:-->
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token comment">// 确保类符合一组接口或类型 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈▶┈┈╮</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment">// 子类这个类 ┈┈┈┈┈┈┈┈↘ ┈┈┈┈┈┈┈┈┈┈┈┈┈┴┈┈┈┈┈┈┈</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token keyword">class</span> <span class="token class-name">User</span> <span class="token keyword">extends</span> <span class="token class-name">Account</span> <span class="token keyword">implements</span> <span class="token class-name">Updatable</span><span class="token punctuation">,</span> Serializable <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="4"> id<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span> <span class="token comment">// 一个字段</span>
|
||||
</span><span class="code-line line-number" line="5"> displayName<span class="token operator">?</span><span class="token operator">:</span> <span class="token builtin">boolean</span><span class="token punctuation">;</span> <span class="token comment">// 可选字段</span>
|
||||
</span><span class="code-line line-number" line="6"> name<span class="token operator">!</span><span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span> <span class="token comment">// '相信我,它在哪里'字段</span>
|
||||
</span><span class="code-line line-number" line="7"> #attributes<span class="token operator">:</span> Map<span class="token operator"><</span><span class="token builtin">any</span><span class="token punctuation">,</span> <span class="token builtin">any</span><span class="token operator">></span><span class="token punctuation">;</span> <span class="token comment">// 私人字段</span>
|
||||
</span><span class="code-line line-number" line="8"> roles <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">"user"</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token comment">// 具有默认值的字段</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token keyword">readonly</span> createdAt <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">// 具有默认值的只读字段</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token comment">// 👇 代码调用“new”</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token function">constructor</span><span class="token punctuation">(</span>id<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">,</span> email<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="12"> <span class="token keyword">super</span><span class="token punctuation">(</span>id<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="13"> <span class="token comment">// 👇 在 `strict: true` 中,会根据字段检查此代码以确保其设置正确</span>
|
||||
</span><span class="code-line line-number" line="14"> <span class="token keyword">this</span><span class="token punctuation">.</span>email <span class="token operator">=</span> email<span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="15"> <span class="token comment">// ....</span>
|
||||
</span><span class="code-line line-number" line="16"> <span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="17"> <span class="token comment">// 👇 描述类方法(和箭头函数字段)的方式</span>
|
||||
</span><span class="code-line line-number" line="18"> <span class="token function">setName</span><span class="token punctuation">(</span>name<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span><span class="token punctuation">.</span>name <span class="token operator">=</span> name <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="19"> <span class="token function-variable function">verifyName</span> <span class="token operator">=</span> <span class="token punctuation">(</span>name<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> <span class="token comment">/* ... */</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="20">
|
||||
</span><span class="code-line line-number" line="21"> <span class="token comment">// 👇 具有 2 个重载定义的函数</span>
|
||||
</span><span class="code-line line-number" line="22"> <span class="token function">sync</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token builtin">Promise</span><span class="token operator"><</span><span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span><span class="token operator">></span>
|
||||
</span><span class="code-line line-number" line="23"> <span class="token function">sync</span><span class="token punctuation">(</span>cb<span class="token operator">:</span> <span class="token punctuation">(</span><span class="token punctuation">(</span>result<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">void</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token keyword">void</span>
|
||||
</span><span class="code-line line-number" line="24"> <span class="token function">sync</span><span class="token punctuation">(</span>cb<span class="token operator">?</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token punctuation">(</span>result<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">void</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token keyword">void</span> <span class="token operator">|</span> <span class="token builtin">Promise</span><span class="token operator"><</span><span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span><span class="token operator">></span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="25"> <span class="token comment">// 👇 Getters 和 setters</span>
|
||||
</span><span class="code-line line-number" line="26"> <span class="token keyword">get</span> <span class="token function">accountID</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="27"> <span class="token keyword">set</span> <span class="token function">accountID</span><span class="token punctuation">(</span>value<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="28"> <span class="token comment">// 👇 私有访问只是对这个类,受保护的允许子类。 仅用于类型检查,public 是默认值。</span>
|
||||
</span><span class="code-line line-number" line="29"> <span class="token keyword">private</span> <span class="token function">makeRequest</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="30"> <span class="token keyword">protected</span> <span class="token function">handleRequest</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="31"> <span class="token comment">// 👇 静态字段/方法</span>
|
||||
</span><span class="code-line line-number" line="32"> <span class="token keyword">static</span> #userCount <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="33"> <span class="token keyword">static</span> <span class="token function">registerUser</span><span class="token punctuation">(</span>user<span class="token operator">:</span> User<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="34"> <span class="token comment">// 👇 用于设置静态变量的静态块。 ‘this’指的是静态类</span>
|
||||
</span><span class="code-line line-number" line="35"> <span class="token keyword">static</span> <span class="token punctuation">{</span> <span class="token keyword">this</span><span class="token punctuation">.</span>#userCount <span class="token operator">=</span> <span class="token operator">-</span><span class="token number">1</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="36"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>泛型</h3><div class="warp-body">
|
||||
<p>声明一个可以在你的类方法中改变的类型。</p>
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">class</span> <span class="token class-name">Box<span class="token operator"><</span>Type<span class="token operator">></span></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> contents<span class="token operator">:</span> Type
|
||||
</span><span class="code-line line-number" line="3"> <span class="token function">constructor</span><span class="token punctuation">(</span>value<span class="token operator">:</span> Type<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token keyword">this</span><span class="token punctuation">.</span>contents <span class="token operator">=</span> value<span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token keyword">const</span> stringBox <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Box</span><span class="token punctuation">(</span><span class="token string">"a package"</span><span class="token punctuation">)</span>
|
||||
</span></code></pre>
|
||||
<p>这些功能是 TypeScript 特定的语言扩展,可能永远无法使用当前语法进入 JavaScript。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>参数属性</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">class</span> <span class="token class-name">Location</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token function">constructor</span><span class="token punctuation">(</span><span class="token keyword">public</span> x<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">,</span> <span class="token keyword">public</span> y<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token keyword">const</span> loc <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Location</span><span class="token punctuation">(</span><span class="token number">20</span><span class="token punctuation">,</span> <span class="token number">40</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="5">
|
||||
</span><span class="code-line line-number" line="6">loc<span class="token punctuation">.</span>x <span class="token comment">// 20</span>
|
||||
</span><span class="code-line line-number" line="7">loc<span class="token punctuation">.</span>y <span class="token comment">// 40</span>
|
||||
</span></code></pre>
|
||||
<p>TypeScript 特定于类的扩展,可自动将实例字段设置为输入参数。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>抽象类</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">abstract</span> <span class="token keyword">class</span> <span class="token class-name">Animal</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token keyword">abstract</span> <span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token function">printName</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token builtin">console</span><span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"Hello, "</span> <span class="token operator">+</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token keyword">class</span> <span class="token class-name">Dog</span> <span class="token keyword">extends</span> <span class="token class-name">Animal</span> <span class="token punctuation">{</span> <span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>一个类可以被声明为不可实现,但可以在类型系统中被子类化。 class 成员也可以。</p>
|
||||
</div></div></div><div class="warp col-span-2"><div class="warp-header h3warp"><h3>装饰器和属性</h3><div class="warp-body"><!--rehype:warp-class=col-span-2--><!--rehype:-->
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">import</span> <span class="token punctuation">{</span> Syncable<span class="token punctuation">,</span> triggersSync<span class="token punctuation">,</span> preferCache<span class="token punctuation">,</span> required <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"mylib"</span>
|
||||
</span><span class="code-line line-number" line="2">
|
||||
</span><span class="code-line line-number" line="3"><span class="token decorator"><span class="token at operator">@</span><span class="token function">Syncable</span></span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token keyword">class</span> <span class="token class-name">User</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token decorator"><span class="token at operator">@</span><span class="token function">triggersSync</span></span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token function">save</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token decorator"><span class="token at operator">@</span><span class="token function">preferCache</span></span><span class="token punctuation">(</span><span class="token boolean">false</span><span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token keyword">get</span> <span class="token function">displayName</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token function">update</span><span class="token punctuation">(</span><span class="token decorator"><span class="token at operator">@</span><span class="token function">required</span></span> info<span class="token operator">:</span> Partial<span class="token operator"><</span>User<span class="token operator">></span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token operator">...</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>您可以在类、类方法、访问器、属性和方法参数上使用装饰器。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>索引签名</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">class</span> <span class="token class-name">MyClass</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token comment">// 最好将索引数据存储在另一个地方</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token comment">// 而不是类实例本身。</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token punctuation">[</span>s<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">]</span><span class="token operator">:</span>
|
||||
</span><span class="code-line line-number" line="5"> <span class="token builtin">boolean</span> <span class="token operator">|</span> <span class="token punctuation">(</span><span class="token punctuation">(</span>s<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token builtin">boolean</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="6">
|
||||
</span><span class="code-line line-number" line="7"> <span class="token function">check</span><span class="token punctuation">(</span>s<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token keyword">return</span> <span class="token keyword">this</span><span class="token punctuation">[</span>s<span class="token punctuation">]</span> <span class="token keyword">as</span> <span class="token builtin">boolean</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>类可以声明索引签名,与其他对象类型的索引签名相同。</p>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>实用程序类型</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>Awaited<Type></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">A</span></span> <span class="token operator">=</span> Awaited<span class="token operator"><</span><span class="token builtin">Promise</span><span class="token operator"><</span><span class="token builtin">string</span><span class="token operator">>></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment">// type A = string</span>
|
||||
</span><span class="code-line line-number" line="3">
|
||||
</span><span class="code-line line-number" line="4"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">B</span></span> <span class="token operator">=</span> Awaited<span class="token operator"><</span><span class="token builtin">Promise</span><span class="token operator"><</span><span class="token builtin">Promise</span><span class="token operator"><</span><span class="token builtin">number</span><span class="token operator">>>></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token comment">// type B = number</span>
|
||||
</span><span class="code-line line-number" line="6">
|
||||
</span><span class="code-line line-number" line="7"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">C</span></span> <span class="token operator">=</span> Awaited<span class="token operator"><</span><span class="token builtin">boolean</span><span class="token operator">|</span><span class="token builtin">Promise</span><span class="token operator"><</span><span class="token builtin">number</span><span class="token operator">>></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token comment">// type C = number | boolean</span>
|
||||
</span></code></pre>
|
||||
<p>这种类型旨在模拟异步函数中的 await 或 Promises 上的 .then() 方法等操作 - 特别是它们递归解包 Promises 的方式。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Required<Type></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">interface</span> <span class="token class-name">Props</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> a<span class="token operator">?</span><span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"> b<span class="token operator">?</span><span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="5">
|
||||
</span><span class="code-line line-number" line="6"><span class="token keyword">const</span> obj<span class="token operator">:</span> Props <span class="token operator">=</span> <span class="token punctuation">{</span> a<span class="token operator">:</span> <span class="token number">5</span> <span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token keyword">const</span> obj2<span class="token operator">:</span> Required<span class="token operator"><</span>Props<span class="token operator">></span> <span class="token operator">=</span> <span class="token punctuation">{</span> a<span class="token operator">:</span> <span class="token number">5</span> <span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token comment">// ❌ 类型“{ a: number;”中缺少属性“b” }' </span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token comment">// 但在 'Required<Props>' 类型中是必需的。</span>
|
||||
</span></code></pre>
|
||||
<p>使 Type 中的所有属性成为必需</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Readonly<Type></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">interface</span> <span class="token class-name">Todo</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> title<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token keyword">const</span> todo<span class="token operator">:</span> Readonly<span class="token operator"><</span>Todo<span class="token operator">></span> <span class="token operator">=</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="5"> title<span class="token operator">:</span> <span class="token string">"Delete inactive users"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="7">todo<span class="token punctuation">.</span>title <span class="token operator">=</span> <span class="token string">"Hello"</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token comment">// ❌ 无法分配给“title”,因为它是只读属性。</span>
|
||||
</span><span class="code-line line-number" line="9">
|
||||
</span><span class="code-line line-number" line="10"><span class="token keyword">function</span> <span class="token generic-function"><span class="token function">freeze</span><span class="token generic class-name"><span class="token operator"><</span>Type<span class="token operator">></span></span></span><span class="token punctuation">(</span>obj<span class="token operator">:</span> Type<span class="token punctuation">)</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token operator">:</span> Readonly<span class="token operator"><</span>Type<span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span></code></pre>
|
||||
<p>将 Type 中的所有属性设为<strong>只读</strong></p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Partial<Type></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">interface</span> <span class="token class-name">Todo</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> title<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"> description<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">function</span> <span class="token function">updateTodo</span><span class="token punctuation">(</span>
|
||||
</span><span class="code-line line-number" line="6"> todo<span class="token operator">:</span> Todo<span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="7"> fieldsToUpdate<span class="token operator">:</span> Partial<span class="token operator"><</span>Todo<span class="token operator">></span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="9"> <span class="token keyword">return</span> <span class="token punctuation">{</span> <span class="token operator">...</span>todo<span class="token punctuation">,</span> <span class="token operator">...</span>fieldsToUpdate <span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="11"><span class="token keyword">const</span> todo1 <span class="token operator">=</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="12"> title<span class="token operator">:</span> <span class="token string">"organize desk"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="13"> description<span class="token operator">:</span> <span class="token string">"clear clutter"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="14"><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="15"><span class="token keyword">const</span> todo2 <span class="token operator">=</span> <span class="token function">updateTodo</span><span class="token punctuation">(</span>todo1<span class="token punctuation">,</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="16"> description<span class="token operator">:</span> <span class="token string">"throw out trash"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="17"><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span></code></pre>
|
||||
<p>将 <code>Type</code> 中的所有属性设为可选</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Record<Keys, Type></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">interface</span> <span class="token class-name">CatInfo</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> age<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"> breed<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="5">
|
||||
</span><span class="code-line line-number" line="6"><span class="token keyword">type</span> <span class="token class-name">CatName</span> <span class="token operator">=</span> <span class="token string">"miffy"</span> <span class="token operator">|</span> <span class="token string">"boris"</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token keyword">const</span> cats<span class="token operator">:</span> Record<span class="token operator"><</span>CatName<span class="token punctuation">,</span> CatInfo<span class="token operator">></span> <span class="token operator">=</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="8"> miffy<span class="token operator">:</span> <span class="token punctuation">{</span>age<span class="token operator">:</span><span class="token number">10</span><span class="token punctuation">,</span> breed<span class="token operator">:</span> <span class="token string">"Persian"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="9"> boris<span class="token operator">:</span> <span class="token punctuation">{</span>age<span class="token operator">:</span><span class="token number">5</span><span class="token punctuation">,</span> breed<span class="token operator">:</span> <span class="token string">"Maine Coon"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="11">
|
||||
</span><span class="code-line line-number" line="12">cats<span class="token punctuation">.</span>boris<span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="13"><span class="token comment">// 👉 const cats: Record<CatName, CatInfo></span>
|
||||
</span></code></pre>
|
||||
<p>构造一个具有一组 Keys 类型的属性 Type 的类型</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Pick<Type, Keys></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">interface</span> <span class="token class-name">Todo</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> name<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"> description<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"> completed<span class="token operator">:</span> <span class="token builtin">boolean</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token keyword">type</span> <span class="token class-name">TodoPreview</span> <span class="token operator">=</span> Pick<span class="token operator"><</span>
|
||||
</span><span class="code-line line-number" line="7"> Todo<span class="token punctuation">,</span> <span class="token string">"name"</span> <span class="token operator">|</span> <span class="token string">"load"</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token keyword">const</span> todo<span class="token operator">:</span> TodoPreview <span class="token operator">=</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="10"> name<span class="token operator">:</span> <span class="token string">"Clean room"</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="11"> load<span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="12"><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="13">
|
||||
</span><span class="code-line line-number" line="14">todo<span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="15"> <span class="token comment">// 👉 const todo: TodoPreview</span>
|
||||
</span></code></pre>
|
||||
<p>从 Type 中<strong>选择</strong>一组其键在并集 Keys 中的属性</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Exclude<UnionType, ExcludedMembers></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T0</span></span> <span class="token operator">=</span> Exclude<span class="token operator"><</span><span class="token string">"a"</span> <span class="token operator">|</span> <span class="token string">"b"</span> <span class="token operator">|</span> <span class="token string">"c"</span><span class="token punctuation">,</span> <span class="token string">"a"</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment">// 👉 type T0 = "b" | "c"</span>
|
||||
</span><span class="code-line line-number" line="3">
|
||||
</span><span class="code-line line-number" line="4"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T1</span></span> <span class="token operator">=</span> Exclude<span class="token operator"><</span><span class="token string">"a"</span><span class="token operator">|</span><span class="token string">"b"</span><span class="token operator">|</span><span class="token string">"c"</span><span class="token punctuation">,</span> <span class="token string">"a"</span> <span class="token operator">|</span> <span class="token string">"b"</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token comment">// 👉 type T1 = "c"</span>
|
||||
</span><span class="code-line line-number" line="6">
|
||||
</span><span class="code-line line-number" line="7"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T2</span></span> <span class="token operator">=</span> Exclude<span class="token operator"><</span><span class="token builtin">string</span> <span class="token operator">|</span> <span class="token builtin">number</span> <span class="token operator">|</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">void</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token builtin">Function</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token comment">// 👉 type T2 = string | number</span>
|
||||
</span></code></pre>
|
||||
<p>从 <code>UnionType</code> 中<strong>排除</strong>那些可分配给 <code>ExcludedMembers</code> 的类型</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Extract<Type, Union></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T0</span></span> <span class="token operator">=</span> Extract<span class="token operator"><</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token string">"a"</span> <span class="token operator">|</span> <span class="token string">"b"</span> <span class="token operator">|</span> <span class="token string">"c"</span><span class="token punctuation">,</span> <span class="token string">"a"</span> <span class="token operator">|</span> <span class="token string">"f"</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment">// type T0 = "a"</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T1</span></span> <span class="token operator">=</span> Extract<span class="token operator"><</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token builtin">string</span> <span class="token operator">|</span> <span class="token builtin">number</span> <span class="token operator">|</span> <span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">void</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token builtin">Function</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token comment">// type T1 = () => void</span>
|
||||
</span></code></pre>
|
||||
<p>通过从 Type 中<strong>提取</strong>所有可分配给 Union 的联合成员来构造一个类型。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>NonNullable<Type></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T0</span></span> <span class="token operator">=</span> NonNullable<span class="token operator"><</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token builtin">string</span> <span class="token operator">|</span> <span class="token builtin">number</span> <span class="token operator">|</span> <span class="token keyword">undefined</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment">// type T0 = string | number</span>
|
||||
</span><span class="code-line line-number" line="5">
|
||||
</span><span class="code-line line-number" line="6"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T1</span></span> <span class="token operator">=</span> NonNullable<span class="token operator"><</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token builtin">string</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">|</span> <span class="token keyword">null</span> <span class="token operator">|</span> <span class="token keyword">undefined</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token comment">// type T1 = string[]</span>
|
||||
</span></code></pre>
|
||||
<p>通过从 Type 中<strong>排除</strong> null 和 undefined 来构造一个类型。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Omit<Type, Keys></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">interface</span> <span class="token class-name">Todo</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> name<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"> completed<span class="token operator">:</span> <span class="token builtin">boolean</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"> createdAt<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="6">
|
||||
</span><span class="code-line line-number" line="7"><span class="token keyword">type</span> <span class="token class-name">TodoPreview</span> <span class="token operator">=</span> Omit<span class="token operator"><</span>Todo<span class="token punctuation">,</span> <span class="token string">"name"</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="8">
|
||||
</span><span class="code-line line-number" line="9"><span class="token keyword">const</span> todo<span class="token operator">:</span> TodoPreview <span class="token operator">=</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="10"> completed<span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="11"> createdAt<span class="token operator">:</span> <span class="token number">1615544252770</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="12"><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="13">
|
||||
</span><span class="code-line line-number" line="14">todo<span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="15"> <span class="token comment">// 👉 const todo: TodoPreview</span>
|
||||
</span></code></pre>
|
||||
<p>构造一个具有 Type 属性的类型,但类型 Keys 中的属性<strong>除外</strong>。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>Parameters<Type></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">declare</span> <span class="token keyword">function</span> <span class="token function">f1</span><span class="token punctuation">(</span>
|
||||
</span><span class="code-line line-number" line="2"> arg<span class="token operator">:</span> <span class="token punctuation">{</span> a<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span> b<span class="token operator">:</span> <span class="token builtin">string</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token keyword">void</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4">
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T0</span></span> <span class="token operator">=</span> Parameters<span class="token operator"><</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token builtin">string</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token comment">// type T0 = []</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T1</span></span> <span class="token operator">=</span> Parameters<span class="token operator"><</span><span class="token punctuation">(</span>s<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">void</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token comment">// type T1 = [s: string]</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T2</span></span> <span class="token operator">=</span> Parameters<span class="token operator"><<</span><span class="token constant">T</span><span class="token operator">></span><span class="token punctuation">(</span>arg<span class="token operator">:</span> <span class="token constant">T</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token constant">T</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token comment">// type T2 = [arg: unknown]</span>
|
||||
</span><span class="code-line line-number" line="11"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T3</span></span> <span class="token operator">=</span> Parameters<span class="token operator"><</span><span class="token keyword">typeof</span> f1<span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="12"><span class="token comment">// type T3 = [arg: {</span>
|
||||
</span><span class="code-line line-number" line="13"><span class="token comment">// a: number;</span>
|
||||
</span><span class="code-line line-number" line="14"><span class="token comment">// b: string;</span>
|
||||
</span><span class="code-line line-number" line="15"><span class="token comment">// }]</span>
|
||||
</span><span class="code-line line-number" line="16"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T4</span></span> <span class="token operator">=</span> Parameters<span class="token operator"><</span><span class="token builtin">any</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="17"><span class="token comment">// type T4 = unknown[]</span>
|
||||
</span><span class="code-line line-number" line="18"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T5</span></span> <span class="token operator">=</span> Parameters<span class="token operator"><</span><span class="token builtin">never</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="19"><span class="token comment">// type T5 = never</span>
|
||||
</span></code></pre>
|
||||
<p>从函数类型 Type 的<strong>参数中</strong>使用的类型构造元组类型。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>ConstructorParameters<Type></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T0</span></span> <span class="token operator">=</span> ConstructorParameters<span class="token operator"><</span>
|
||||
</span><span class="code-line line-number" line="2"> ErrorConstructor
|
||||
</span><span class="code-line line-number" line="3"><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment">// type T0 = [message?: string]</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T1</span></span> <span class="token operator">=</span> ConstructorParameters<span class="token operator"><</span>
|
||||
</span><span class="code-line line-number" line="6"> FunctionConstructor
|
||||
</span><span class="code-line line-number" line="7"><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token comment">// type T1 = string[]</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T2</span></span> <span class="token operator">=</span> ConstructorParameters<span class="token operator"><</span>
|
||||
</span><span class="code-line line-number" line="10"> RegExpConstructor
|
||||
</span><span class="code-line line-number" line="11"><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="12"><span class="token comment">// type T2 = [</span>
|
||||
</span><span class="code-line line-number" line="13"><span class="token comment">// pattern: string | RegExp,</span>
|
||||
</span><span class="code-line line-number" line="14"><span class="token comment">// flags?: string</span>
|
||||
</span><span class="code-line line-number" line="15"><span class="token comment">// ]</span>
|
||||
</span><span class="code-line line-number" line="16"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T3</span></span> <span class="token operator">=</span> ConstructorParameters<span class="token operator"><</span><span class="token builtin">any</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="17"><span class="token comment">// type T3 = unknown[]</span>
|
||||
</span></code></pre>
|
||||
<p>从构造函数类型的类型构造元组或数组类型。它产生一个包含所有参数类型的元组类型(如果 Type 不是函数,则类型 never )。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>内在字符串操作类型</h3><div class="warp-body">
|
||||
</div></div><div class="h3warp-body"><div class="warp"><div class="warp-header h4warp"><h4>Uppercase<StringType></h4><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name">Greeting</span> <span class="token operator">=</span> <span class="token string">"Hello, world"</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">type</span> <span class="token class-name">ShoutyGreeting</span> <span class="token operator">=</span> Uppercase<span class="token operator"><</span>Greeting<span class="token operator">></span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment">// type ShoutyGreeting = "HELLO, WORLD"</span>
|
||||
</span><span class="code-line line-number" line="4">
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">type</span> <span class="token class-name">ASCIICacheKey<span class="token operator"><</span>Str <span class="token keyword">extends</span> <span class="token builtin">string</span><span class="token operator">></span></span> <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">ID-</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>Uppercase<span class="token operator"><</span>Str<span class="token operator">></span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token keyword">type</span> <span class="token class-name">MainID</span> <span class="token operator">=</span> ASCIICacheKey<span class="token operator"><</span><span class="token string">"my_app"</span><span class="token operator">></span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token comment">// type MainID = "ID-MY_APP"</span>
|
||||
</span></code></pre>
|
||||
<p>将字符串中的每个字符<strong>转换为大写</strong>版本。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h4warp"><h4>Lowercase<StringType></h4><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name">Greeting</span> <span class="token operator">=</span> <span class="token string">"Hello, world"</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">type</span> <span class="token class-name">QuietGreeting</span> <span class="token operator">=</span> Lowercase<span class="token operator"><</span>Greeting<span class="token operator">></span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment">// type QuietGreeting = "hello, world"</span>
|
||||
</span><span class="code-line line-number" line="4">
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">type</span> <span class="token class-name">ASCIICacheKey<span class="token operator"><</span>Str <span class="token keyword">extends</span> <span class="token builtin">string</span><span class="token operator">></span></span> <span class="token operator">=</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">id-</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>Lowercase<span class="token operator"><</span>Str<span class="token operator">></span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token keyword">type</span> <span class="token class-name">MainID</span> <span class="token operator">=</span> ASCIICacheKey<span class="token operator"><</span><span class="token string">"MY_APP"</span><span class="token operator">></span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token comment">// type MainID = "id-my_app"</span>
|
||||
</span></code></pre>
|
||||
<p>将字符串中的每个字符转换为等效的<strong>小写字母</strong>。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h4warp"><h4>Capitalize<StringType></h4><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name">LowercaseGreeting</span> <span class="token operator">=</span> <span class="token string">"hello, world"</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">type</span> <span class="token class-name">Greeting</span> <span class="token operator">=</span> Capitalize<span class="token operator"><</span>LowercaseGreeting<span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment">// type Greeting = "Hello, world"</span>
|
||||
</span></code></pre>
|
||||
<p>将字符串中的第一个字符转换为等效的<strong>大写字母</strong>。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h4warp"><h4>Uncapitalize<StringType></h4><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name">UppercaseGreeting</span> <span class="token operator">=</span> <span class="token string">"HELLO WORLD"</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">type</span> <span class="token class-name">UncomfortableGreeting</span> <span class="token operator">=</span> Uncapitalize<span class="token operator"><</span>UppercaseGreeting<span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token comment">// type UncomfortableGreeting = "hELLO WORLD"</span>
|
||||
</span></code></pre>
|
||||
<p>将字符串中的第一个字符转换为等效的<strong>小写字母</strong>。</p>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h3warp"><h3>ReturnType<Type></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">declare</span> <span class="token keyword">function</span> <span class="token function">f1</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> a<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span> b<span class="token operator">:</span> <span class="token builtin">string</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4">
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T0</span></span> <span class="token operator">=</span> ReturnType<span class="token operator"><</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token builtin">string</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token comment">// type T0 = string</span>
|
||||
</span><span class="code-line line-number" line="7">
|
||||
</span><span class="code-line line-number" line="8"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T1</span></span> <span class="token operator">=</span> ReturnType<span class="token operator"><</span><span class="token punctuation">(</span>s<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">void</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token comment">// type T1 = void</span>
|
||||
</span><span class="code-line line-number" line="10">
|
||||
</span><span class="code-line line-number" line="11"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T2</span></span> <span class="token operator">=</span> ReturnType<span class="token operator"><<</span><span class="token constant">T</span><span class="token operator">></span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token constant">T</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="12"><span class="token comment">// type T2 = unknown</span>
|
||||
</span><span class="code-line line-number" line="13">
|
||||
</span><span class="code-line line-number" line="14"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T3</span></span> <span class="token operator">=</span> ReturnType<span class="token operator"><<</span>
|
||||
</span><span class="code-line line-number" line="15"> <span class="token constant">T</span> <span class="token keyword">extends</span> <span class="token class-name"><span class="token constant">U</span></span><span class="token punctuation">,</span> <span class="token constant">U</span> <span class="token keyword">extends</span> <span class="token class-name"><span class="token builtin">number</span></span><span class="token punctuation">[</span><span class="token punctuation">]</span>
|
||||
</span><span class="code-line line-number" line="16"><span class="token operator">></span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token constant">T</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="17"><span class="token comment">// type T3 = number[]</span>
|
||||
</span><span class="code-line line-number" line="18">
|
||||
</span><span class="code-line line-number" line="19"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T4</span></span> <span class="token operator">=</span> ReturnType<span class="token operator"><</span><span class="token keyword">typeof</span> f1<span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="20"><span class="token comment">// type T4 = {</span>
|
||||
</span><span class="code-line line-number" line="21"><span class="token comment">// a: number;</span>
|
||||
</span><span class="code-line line-number" line="22"><span class="token comment">// b: string;</span>
|
||||
</span><span class="code-line line-number" line="23"><span class="token comment">// }</span>
|
||||
</span><span class="code-line line-number" line="24">
|
||||
</span><span class="code-line line-number" line="25"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T5</span></span> <span class="token operator">=</span> ReturnType<span class="token operator"><</span><span class="token builtin">any</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="26"><span class="token comment">// type T5 = any</span>
|
||||
</span><span class="code-line line-number" line="27">
|
||||
</span><span class="code-line line-number" line="28"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T6</span></span> <span class="token operator">=</span> ReturnType<span class="token operator"><</span><span class="token builtin">never</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="29"><span class="token comment">// type T6 = never</span>
|
||||
</span></code></pre>
|
||||
<p>构造一个由函数 Type 的<strong>返回类型</strong>组成的类型。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>ThisType<Type></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">type</span> <span class="token class-name">ObjectDescriptor<span class="token operator"><</span><span class="token constant">D</span><span class="token punctuation">,</span> <span class="token constant">M</span><span class="token operator">></span></span> <span class="token operator">=</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> data<span class="token operator">?</span><span class="token operator">:</span> <span class="token constant">D</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token comment">// 方法中“this”的类型是 D & M</span>
|
||||
</span><span class="code-line line-number" line="4"> methods<span class="token operator">?</span><span class="token operator">:</span> <span class="token constant">M</span> <span class="token operator">&</span> ThisType<span class="token operator"><</span><span class="token constant">D</span> <span class="token operator">&</span> <span class="token constant">M</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="6">
|
||||
</span><span class="code-line line-number" line="7"><span class="token keyword">function</span> <span class="token generic-function"><span class="token function">makeObject</span><span class="token generic class-name"><span class="token operator"><</span><span class="token constant">D</span><span class="token punctuation">,</span> <span class="token constant">M</span><span class="token operator">></span></span></span><span class="token punctuation">(</span>
|
||||
</span><span class="code-line line-number" line="8"> desc<span class="token operator">:</span> ObjectDescriptor<span class="token operator"><</span><span class="token constant">D</span><span class="token punctuation">,</span> <span class="token constant">M</span><span class="token operator">></span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token constant">D</span> <span class="token operator">&</span> <span class="token constant">M</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token keyword">let</span> data<span class="token operator">:</span> object <span class="token operator">=</span> desc<span class="token punctuation">.</span>data <span class="token operator">||</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token keyword">let</span> methods<span class="token operator">:</span> object <span class="token operator">=</span> desc<span class="token punctuation">.</span>methods <span class="token operator">||</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="12"> <span class="token keyword">return</span> <span class="token punctuation">{</span> <span class="token operator">...</span>data<span class="token punctuation">,</span> <span class="token operator">...</span>methods <span class="token punctuation">}</span> <span class="token keyword">as</span> <span class="token constant">D</span> <span class="token operator">&</span> <span class="token constant">M</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="13"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="14">
|
||||
</span><span class="code-line line-number" line="15"><span class="token keyword">let</span> obj <span class="token operator">=</span> <span class="token function">makeObject</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="16"> data<span class="token operator">:</span> <span class="token punctuation">{</span> x<span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span> y<span class="token operator">:</span> <span class="token number">0</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="17"> methods<span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="18"> <span class="token function">moveBy</span><span class="token punctuation">(</span>dx<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">,</span> dy<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="19"> <span class="token keyword">this</span><span class="token punctuation">.</span>x <span class="token operator">+=</span> dx<span class="token punctuation">;</span> <span class="token comment">// Strongly typed this</span>
|
||||
</span><span class="code-line line-number" line="20"> <span class="token keyword">this</span><span class="token punctuation">.</span>y <span class="token operator">+=</span> dy<span class="token punctuation">;</span> <span class="token comment">// Strongly typed this</span>
|
||||
</span><span class="code-line line-number" line="21"> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="22"> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="23"><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="24">
|
||||
</span><span class="code-line line-number" line="25">obj<span class="token punctuation">.</span>x <span class="token operator">=</span> <span class="token number">10</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="26">obj<span class="token punctuation">.</span>y <span class="token operator">=</span> <span class="token number">20</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="27">obj<span class="token punctuation">.</span><span class="token function">moveBy</span><span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span></code></pre>
|
||||
<p>此实用程序不返回转换后的类型。 相反,它用作上下文 this 类型的标记。 请注意,必须启用 <a href="https://www.typescriptlang.org/tsconfig#noImplicitThis">noImplicitThis</a> 标志才能使用此实用程序。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>InstanceType<Type></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">class</span> <span class="token class-name"><span class="token constant">C</span></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> x <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"> y <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T0</span></span> <span class="token operator">=</span> InstanceType<span class="token operator"><</span><span class="token keyword">typeof</span> <span class="token constant">C</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token comment">// type T0 = C</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T1</span></span> <span class="token operator">=</span> InstanceType<span class="token operator"><</span><span class="token builtin">any</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token comment">// type T1 = any</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token keyword">type</span> <span class="token class-name"><span class="token constant">T2</span></span> <span class="token operator">=</span> InstanceType<span class="token operator"><</span><span class="token builtin">never</span><span class="token operator">></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="10"><span class="token comment">// type T2 = never</span>
|
||||
</span></code></pre>
|
||||
<p>构造一个由 Type 中构造函数的实例类型组成的类型。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>ThisParameterType<Type></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">function</span> <span class="token function">toHex</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token operator">:</span> Number<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token keyword">return</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token number">16</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="4">
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">function</span> <span class="token function">numberToString</span><span class="token punctuation">(</span>
|
||||
</span><span class="code-line line-number" line="6"> n<span class="token operator">:</span> ThisParameterType<span class="token operator"><</span><span class="token keyword">typeof</span> toHex<span class="token operator">></span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token keyword">return</span> <span class="token function">toHex</span><span class="token punctuation">.</span><span class="token function">apply</span><span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
<p>提取函数类型的 <code>this</code> 参数的类型,如果函数类型没有 <code>this</code> 参数,则为未知。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>OmitThisParameter<Type></h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">function</span> <span class="token function">toHex</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token operator">:</span> Number<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token keyword">return</span> <span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token number">16</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token keyword">const</span> fiveToHex
|
||||
</span><span class="code-line line-number" line="5"> <span class="token operator">:</span> OmitThisParameter<span class="token operator"><</span><span class="token keyword">typeof</span> toHex<span class="token operator">></span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token operator">=</span> <span class="token function">toHex</span><span class="token punctuation">.</span><span class="token function">bind</span><span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="7">
|
||||
</span><span class="code-line line-number" line="8"><span class="token builtin">console</span><span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token function">fiveToHex</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span></code></pre>
|
||||
<p>从 Type 中移除 this 参数。 如果 Type 没有显式声明此参数,则结果只是 Type。 否则,从 Type 创建一个不带此参数的新函数类型。 泛型被删除,只有最后一个重载签名被传播到新的函数类型中。</p>
|
||||
</div></div></div></div></div><div class="warp"><div class="warp-header h2warp"><h2>JSX</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>JSX 介绍</h3><div class="warp-body">
|
||||
<p>JSX 规范是对 ECMAScript 的类似 XML 的语法扩展。</p>
|
||||
<ul>
|
||||
<li>使用 <code>.tsx</code> 扩展名命名您的文件</li>
|
||||
<li>启用 <code>jsx</code> 选项</li>
|
||||
<li>不允许在 <code>.tsx</code> 文件中使用尖括号类型断言。</li>
|
||||
<li><a href="https://facebook.github.io/jsx/">JSX 规范</a></li>
|
||||
</ul>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>as 运算符</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">const</span> foo <span class="token operator">=</span> <span class="token operator"><</span>foo<span class="token operator">></span>bar<span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token comment">// 不允许在 .tsx 👆 文件中使用尖括号类型断言。</span>
|
||||
</span><span class="code-line line-number" line="3">
|
||||
</span><span class="code-line line-number" line="4"><span class="token keyword">const</span> foo <span class="token operator">=</span> bar <span class="token keyword">as</span> foo<span class="token punctuation">;</span>
|
||||
</span></code></pre>
|
||||
<p><code>as</code> 运算符在 <code>.ts</code> 和 <code>.tsx</code> 文件中都可用,并且在行为上与<strong>尖括号</strong>类型断言样式相同。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>基于值的元素</h3><div class="warp-body">
|
||||
<pre class="language-tsx"><code class="language-tsx code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">import</span> <span class="token imports"><span class="token maybe-class-name">MyComponent</span></span> <span class="token keyword">from</span> <span class="token string">"./myComponent"</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="2">
|
||||
</span><span class="code-line line-number" line="3"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">MyComponent</span></span> <span class="token punctuation">/></span></span><span class="token punctuation">;</span> <span class="token comment">// ok</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">SomeOtherComponent</span></span> <span class="token punctuation">/></span></span><span class="token punctuation">;</span> <span class="token comment">// ❌ error</span>
|
||||
</span></code></pre>
|
||||
<p>基于值的元素只是由范围内的标识符查找。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>内在的元素</h3><div class="warp-body">
|
||||
<pre class="language-tsx"><code class="language-tsx code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">declare</span> <span class="token keyword">namespace</span> <span class="token constant">JSX</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token keyword">interface</span> <span class="token class-name">IntrinsicElements</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="3"> foo<span class="token operator">:</span> <span class="token builtin">any</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>foo</span> <span class="token punctuation">/></span></span><span class="token punctuation">;</span> <span class="token comment">// ok</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>bar</span> <span class="token punctuation">/></span></span><span class="token punctuation">;</span> <span class="token comment">// error</span>
|
||||
</span></code></pre>
|
||||
<p><bar /> 没有在 JSX.IntrinsicElements 上指定。</p>
|
||||
<pre class="language-tsx"><code class="language-tsx code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">declare</span> <span class="token keyword">namespace</span> <span class="token constant">JSX</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token keyword">interface</span> <span class="token class-name">IntrinsicElements</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token punctuation">[</span>elemName<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">]</span><span class="token operator">:</span> <span class="token builtin">any</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp col-span-2"><div class="warp-header h3warp"><h3>函数组件</h3><div class="warp-body"><!--rehype:warp-class=col-span-2--><!--rehype:-->
|
||||
<pre class="language-tsx"><code class="language-tsx code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">interface</span> <span class="token class-name">FooProp</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> name<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token constant">X</span><span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token constant">Y</span><span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token keyword">declare</span> <span class="token keyword">function</span> <span class="token function">AnotherComponent</span><span class="token punctuation">(</span>prop<span class="token operator">:</span> <span class="token punctuation">{</span> name<span class="token operator">:</span> <span class="token builtin">string</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token keyword">function</span> <span class="token function">ComponentFoo</span><span class="token punctuation">(</span>prop<span class="token operator">:</span> <span class="token maybe-class-name">FooProp</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="8"> <span class="token keyword">return</span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">AnotherComponent</span></span> <span class="token attr-name">name</span><span class="token script language-javascript"><span class="token script-punctuation punctuation">=</span><span class="token punctuation">{</span>prop<span class="token punctuation">.</span><span class="token property-access">name</span><span class="token punctuation">}</span></span> <span class="token punctuation">/></span></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="10">
|
||||
</span><span class="code-line line-number" line="11"><span class="token keyword">const</span> <span class="token function-variable function">Button</span> <span class="token operator">=</span> <span class="token punctuation">(</span>prop<span class="token operator">:</span> <span class="token punctuation">{</span> value<span class="token operator">:</span> <span class="token builtin">string</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> context<span class="token operator">:</span> <span class="token punctuation">{</span> color<span class="token operator">:</span> <span class="token builtin">string</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">(</span>
|
||||
</span><span class="code-line line-number" line="12"> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>button</span> <span class="token punctuation">/></span></span>
|
||||
</span><span class="code-line line-number" line="13"><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span></code></pre>
|
||||
<p>该组件被定义为一个 JavaScript 函数,其第一个参数是一个 props 对象。 TS 强制它的返回类型必须可分配给 JSX.Element。</p>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>函数组件重载</h3><div class="warp-body">
|
||||
<pre class="language-tsx"><code class="language-tsx code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">interface</span> <span class="token class-name">CeProps</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> children<span class="token operator">:</span> <span class="token constant">JSX</span><span class="token punctuation">.</span><span class="token property-access"><span class="token maybe-class-name">Element</span></span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">|</span> <span class="token constant">JSX</span><span class="token punctuation">.</span><span class="token property-access"><span class="token maybe-class-name">Element</span></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="4">
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">interface</span> <span class="token class-name">HomeProps</span> <span class="token keyword">extends</span> <span class="token class-name">CeProps</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="6"> home<span class="token operator">:</span> <span class="token constant">JSX</span><span class="token punctuation">.</span><span class="token property-access"><span class="token maybe-class-name">Element</span></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="8">
|
||||
</span><span class="code-line line-number" line="9"><span class="token keyword">interface</span> <span class="token class-name">SideProps</span> <span class="token keyword">extends</span> <span class="token class-name">CeProps</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="10"> side<span class="token operator">:</span> <span class="token constant">JSX</span><span class="token punctuation">.</span><span class="token property-access"><span class="token maybe-class-name">Element</span></span> <span class="token operator">|</span> <span class="token builtin">string</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="11"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="12">
|
||||
</span><span class="code-line line-number" line="13"><span class="token keyword">function</span> <span class="token function">Dog</span><span class="token punctuation">(</span>prop<span class="token operator">:</span> <span class="token maybe-class-name">HomeProps</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token constant">JSX</span><span class="token punctuation">.</span><span class="token property-access"><span class="token maybe-class-name">Element</span></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="14"><span class="token keyword">function</span> <span class="token function">Dog</span><span class="token punctuation">(</span>prop<span class="token operator">:</span> <span class="token maybe-class-name">SideProps</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token constant">JSX</span><span class="token punctuation">.</span><span class="token property-access"><span class="token maybe-class-name">Element</span></span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="15"><span class="token keyword">function</span> <span class="token function">Dog</span><span class="token punctuation">(</span>prop<span class="token operator">:</span> <span class="token maybe-class-name">CeProps</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token constant">JSX</span><span class="token punctuation">.</span><span class="token property-access"><span class="token maybe-class-name">Element</span></span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="16"> <span class="token comment">// ...</span>
|
||||
</span><span class="code-line line-number" line="17"><span class="token punctuation">}</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp col-span-2"><div class="warp-header h3warp"><h3>函数子组件</h3><div class="warp-body"><!--rehype:warp-class=col-span-2--><!--rehype:-->
|
||||
<pre class="language-tsx"><code class="language-tsx code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">interface</span> <span class="token class-name">MenuProps</span> <span class="token keyword">extends</span> <span class="token class-name">React</span><span class="token punctuation">.</span><span class="token property-access"><span class="token maybe-class-name">LiHTMLAttributes</span></span><span class="token operator"><</span><span class="token maybe-class-name">HTMLUListElement</span><span class="token operator">></span> <span class="token punctuation">{</span> <span class="token spread operator">...</span> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="2"><span class="token keyword">const</span> <span class="token function-variable function">InternalMenu</span> <span class="token operator">=</span> <span class="token punctuation">(</span>props<span class="token operator">:</span> <span class="token maybe-class-name">MenuProps</span><span class="token punctuation">,</span> ref<span class="token operator">?</span><span class="token operator">:</span> <span class="token maybe-class-name">React</span><span class="token punctuation">.</span><span class="token property-access"><span class="token maybe-class-name">ForwardedRef</span></span><span class="token operator"><</span><span class="token maybe-class-name">HTMLUListElement</span><span class="token operator">></span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">(</span>
|
||||
</span><span class="code-line line-number" line="3"> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>ul</span> <span class="token spread"><span class="token punctuation">{</span><span class="token spread operator">...</span>props<span class="token punctuation">}</span></span> <span class="token attr-name">ref</span><span class="token script language-javascript"><span class="token script-punctuation punctuation">=</span><span class="token punctuation">{</span>ref<span class="token punctuation">}</span></span> <span class="token punctuation">/></span></span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">type</span> <span class="token class-name">MenuComponent</span> <span class="token operator">=</span> <span class="token maybe-class-name">React</span><span class="token punctuation">.</span><span class="token constant">FC</span><span class="token operator"><</span><span class="token maybe-class-name">React</span><span class="token punctuation">.</span><span class="token property-access"><span class="token maybe-class-name">PropsWithRef</span></span><span class="token operator"><</span><span class="token maybe-class-name">MenuProps</span><span class="token operator">>></span> <span class="token operator">&</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="6"> <span class="token maybe-class-name">Item</span><span class="token operator">:</span> <span class="token keyword">typeof</span> <span class="token maybe-class-name">MenuItem</span><span class="token punctuation">;</span> <span class="token comment">// MenuItem 函数组件</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token maybe-class-name">SubMenu</span><span class="token operator">:</span> <span class="token keyword">typeof</span> <span class="token maybe-class-name">SubMenu</span><span class="token punctuation">;</span> <span class="token comment">// SubMenu 函数组件</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token keyword">const</span> <span class="token maybe-class-name">Menu</span><span class="token operator">:</span> <span class="token maybe-class-name">MenuComponent</span> <span class="token operator">=</span> <span class="token maybe-class-name">React</span><span class="token punctuation">.</span><span class="token property-access">forwardRef</span><span class="token operator"><</span><span class="token maybe-class-name">HTMLUListElement</span><span class="token operator">></span><span class="token punctuation">(</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token maybe-class-name">InternalMenu</span>
|
||||
</span><span class="code-line line-number" line="11"><span class="token punctuation">)</span> <span class="token keyword">as</span> <span class="token builtin">unknown</span> <span class="token keyword">as</span> <span class="token maybe-class-name">MenuComponent</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="12">
|
||||
</span><span class="code-line line-number" line="13"><span class="token maybe-class-name">Menu</span><span class="token punctuation">.</span><span class="token property-access"><span class="token maybe-class-name">Item</span></span> <span class="token operator">=</span> <span class="token maybe-class-name">MenuItem</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="14"><span class="token maybe-class-name">Menu</span><span class="token punctuation">.</span><span class="token property-access"><span class="token maybe-class-name">SubMenu</span></span> <span class="token operator">=</span> <span class="token maybe-class-name">SubMenu</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="15">
|
||||
</span><span class="code-line line-number" line="16"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">Menu.Item</span></span> <span class="token punctuation">/></span></span> <span class="token comment">// ok</span>
|
||||
</span><span class="code-line line-number" line="17"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">Menu.SubMenu</span></span> <span class="token punctuation">/></span></span> <span class="token comment">// ok</span>
|
||||
</span></code></pre>
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>类组件</h3><div class="warp-body">
|
||||
<pre class="language-ts"><code class="language-ts code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">class</span> <span class="token class-name">MyComponent</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="4"><span class="token comment">// 使用构造签名</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token keyword">const</span> myComponent <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MyComponent</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token comment">// element class type => MyComponent</span>
|
||||
</span><span class="code-line line-number" line="7"><span class="token comment">// element instance type => { render: () => void }</span>
|
||||
</span><span class="code-line line-number" line="8">
|
||||
</span><span class="code-line line-number" line="9"><span class="token keyword">function</span> <span class="token function">MyFactoryFunction</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token keyword">return</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="11"> <span class="token function-variable function">render</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
</span><span class="code-line line-number" line="12"> <span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="13"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="14"><span class="token comment">// 使用调用签名</span>
|
||||
</span><span class="code-line line-number" line="15"><span class="token keyword">const</span> myComponent <span class="token operator">=</span> <span class="token function">MyFactoryFunction</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="16"><span class="token comment">// element class type => MyFactoryFunction</span>
|
||||
</span><span class="code-line line-number" line="17"><span class="token comment">// element instance type => { render: () => void }</span>
|
||||
</span></code></pre>
|
||||
<p>元素实例类型很有趣,因为它必须可以分配给JSX。ElementClass,否则将导致错误。默认情况下,JSX。ElementClass 是 {},但可以对其进行扩展,以将JSX的使用限制为仅限于符合适当接口的类型。</p>
|
||||
<pre class="language-tsx"><code class="language-tsx code-highlight"><span class="code-line line-number" line="1"><span class="token keyword">declare</span> <span class="token keyword">namespace</span> <span class="token constant">JSX</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="2"> <span class="token keyword">interface</span> <span class="token class-name">ElementClass</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="3"> render<span class="token operator">:</span> <span class="token builtin">any</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="4"> <span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="5"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="6"><span class="token keyword">class</span> <span class="token class-name">MyComponent</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="7"> <span class="token function">render</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="8"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="9"><span class="token keyword">function</span> <span class="token function">MyFactoryFunction</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="10"> <span class="token keyword">return</span> <span class="token punctuation">{</span> <span class="token function-variable function">render</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token arrow operator">=></span> <span class="token punctuation">{</span><span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="11"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="12"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">MyComponent</span></span> <span class="token punctuation">/></span></span><span class="token punctuation">;</span> <span class="token comment">// ok</span>
|
||||
</span><span class="code-line line-number" line="13"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">MyFactoryFunction</span></span> <span class="token punctuation">/></span></span><span class="token punctuation">;</span> <span class="token comment">// ok</span>
|
||||
</span><span class="code-line line-number" line="14">
|
||||
</span><span class="code-line line-number" line="15"><span class="token keyword">class</span> <span class="token class-name">NotAValidComponent</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="16"><span class="token keyword">function</span> <span class="token function">NotAValidFactoryFunction</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
</span><span class="code-line line-number" line="17"> <span class="token keyword">return</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
|
||||
</span><span class="code-line line-number" line="18"><span class="token punctuation">}</span>
|
||||
</span><span class="code-line line-number" line="19"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">NotAValidComponent</span></span> <span class="token punctuation">/></span></span><span class="token punctuation">;</span> <span class="token comment">// ❌ error</span>
|
||||
</span><span class="code-line line-number" line="20"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token class-name">NotAValidFactoryFunction</span></span> <span class="token punctuation">/></span></span><span class="token punctuation">;</span> <span class="token comment">// ❌ error</span>
|
||||
</span></code></pre>
|
||||
|
||||
</div></div></div></div></div></div></div><footer class="footer-warp"><footer class="max-container">© 2022 Kenny Wang, All rights reserved.</footer></footer></body>
|
||||
</html>
|
611
docs/vscode.html
Normal file
611
docs/vscode.html
Normal file
@ -0,0 +1,611 @@
|
||||
<!doctype html>
|
||||
<html lang="en" data-color-mode="dark">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>VSCode 备忘清单
|
||||
& Quick Reference</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta description="这个 VSCode (Visual Studio Code) 快速参考备忘单显示了它的键盘快捷键和命令。为开发人员分享快速参考备忘单。">
|
||||
<meta keywords="Quick,Reference">
|
||||
<link rel="stylesheet" href="../style/style.css">
|
||||
</head>
|
||||
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em"><path opacity=".5" d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="white"></path><path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#cbd5e1"></path><path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#292D32"></path></svg><span class="title">Quick Reference</span></a><div class="menu"><a href="https://github.com/jaywcjlove/reference/blob/main/docs/vscode.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="warp max-container"><header class="warp-header h1warp"><h1>VSCode 备忘清单</h1><div class="warp-body">
|
||||
<p>这个 VSCode (Visual Studio Code) 快速参考备忘单显示了它的键盘快捷键和命令。</p>
|
||||
</div></header><div class="h1warp-body"><div class="warp"><div class="warp-header h2warp"><h2>Windows</h2><div class="warp-body">
|
||||
</div></div><div class="h2warp-body"><div class="warp"><div class="warp-header h3warp"><h3>一般的</h3><div class="warp-body">
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>-</th>
|
||||
<th>-</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>P</code> <em>/</em> <code>F1</code></td>
|
||||
<td>显示命令面板</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>P</code></td>
|
||||
<td>快速打开,转到文件</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>N</code></td>
|
||||
<td>新窗户</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>W</code></td>
|
||||
<td>关闭窗口</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>,</code></td>
|
||||
<td>用户设置</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>Ctrl</code> <code>S</code></td>
|
||||
<td>键盘快捷键</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div><div class="warp" style="grid-row: span 2/span 2;"><div class="warp-header h3warp"><h3>基本编辑</h3><div class="warp-body"><!--rehype:data-warp-style=grid-row: span 2/span 2;-->
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>-</th>
|
||||
<th>-</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>X</code></td>
|
||||
<td>剪切行</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>C</code></td>
|
||||
<td>复制行</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Alt</code> <code>↑</code> <em>/</em> <code>↓</code></td>
|
||||
<td>向上/向下移动行</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Shift</code> <code>Alt</code> <code>↓</code> <em>/</em> <code>↑</code></td>
|
||||
<td>向上/向下复制行</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>K</code></td>
|
||||
<td>删除行</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Enter</code></td>
|
||||
<td>在下面插入行</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>Enter</code></td>
|
||||
<td>在上面插入行</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>\</code></td>
|
||||
<td>跳转到匹配的括号</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>]</code> <em>/</em> <code>[</code></td>
|
||||
<td>缩进/突出行</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Home</code> <em>/</em> <code>End</code></td>
|
||||
<td>转到行首/行尾</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Home</code></td>
|
||||
<td>转到文件开头</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>End</code></td>
|
||||
<td>转到文件末尾</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>↑</code> <em>/</em> <code>↓</code></td>
|
||||
<td>向上/向下滚动行</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Alt</code> <code>PgUp</code> <em>/</em> <code>PgDn</code></td>
|
||||
<td>向上/向下滚动页面</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>[</code></td>
|
||||
<td>折叠(折叠)区域</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>]</code></td>
|
||||
<td>展开(展开)区域</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>Ctrl</code> <code>[</code></td>
|
||||
<td>折叠(折叠)所有子区域</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>Ctrl</code> <code>]</code></td>
|
||||
<td>展开(展开)所有子区域</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>Ctrl</code> <code>0</code></td>
|
||||
<td>折叠(折叠)所有区域</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>Ctrl</code> <code>J</code></td>
|
||||
<td>展开(展开)所有区域</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>Ctrl</code> <code>C</code></td>
|
||||
<td>添加行注释</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>Ctrl</code> <code>U</code></td>
|
||||
<td>删除行注释</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>/</code></td>
|
||||
<td>切换行注释</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Shift</code> <code>Alt</code> <code>A</code></td>
|
||||
<td>切换块评论</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Alt</code> <code>Z</code></td>
|
||||
<td>切换自动换行</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>导航</h3><div class="warp-body">
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>-</th>
|
||||
<th>-</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>T</code></td>
|
||||
<td>显示所有符号</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>G</code></td>
|
||||
<td>去线</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>P</code></td>
|
||||
<td>转到文件</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>O</code></td>
|
||||
<td>转到符号</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>M</code></td>
|
||||
<td>显示问题面板</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>F8</code></td>
|
||||
<td>转到下一个错误</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Shift</code> <code>F8</code></td>
|
||||
<td>转到上一个错误</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>Tab</code></td>
|
||||
<td>浏览编辑组历史</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Alt</code> <code>←</code> <em>/</em> <code>→</code></td>
|
||||
<td>后退/前进</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>M</code></td>
|
||||
<td>切换 Tab 移动焦点</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>搜索和替换</h3><div class="warp-body">
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>-</th>
|
||||
<th>-</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>F</code></td>
|
||||
<td>寻找</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>H</code></td>
|
||||
<td>代替</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>F3</code> <em>/</em> <code>Shift</code> <code>F3</code></td>
|
||||
<td>查找下一个/上一个</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Alt</code> <code>Enter</code></td>
|
||||
<td>选择所有出现的查找匹配项</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>D</code></td>
|
||||
<td>将选择添加到下一个查找匹配项</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>Ctrl</code> <code>D</code></td>
|
||||
<td>将最后一个选择移动到下一个查找匹配项</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Alt</code> <code>C</code> <em>/</em> <code>R</code> <em>/</em> <code>W</code></td>
|
||||
<td>切换区分大小写/正则表达式/整个单词</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>多光标和选择</h3><div class="warp-body">
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>-</th>
|
||||
<th>-</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Alt</code> <code>Click</code></td>
|
||||
<td>插入光标</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Alt</code> <code>↑</code> <em>/</em> <code>↓</code></td>
|
||||
<td>在上方/下方插入光标</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>U</code></td>
|
||||
<td>撤消上一次光标操作</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Shift</code> <code>Alt</code> <code>I</code></td>
|
||||
<td>在选定的每一行的末尾插入光标</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>I</code></td>
|
||||
<td>选择当前行</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>L</code></td>
|
||||
<td>选择当前选择的所有匹配项</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>F2</code></td>
|
||||
<td>选择当前单词的所有出现</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Shift</code> <code>Alt</code> <code>→</code></td>
|
||||
<td>展开选择</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Shift</code> <code>Alt</code> <code>←</code></td>
|
||||
<td>收缩选择</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Shift</code> <code>Alt</code> <code><Drag></code></td>
|
||||
<td>列(框)选择</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>Alt</code> <code><Arrow></code></td>
|
||||
<td>列(框)选择</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>Alt</code> <code>PgUp</code> <em>/</em> <code>PgDn</code></td>
|
||||
<td>列(框)选择页上/下</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>丰富的语言编辑</h3><div class="warp-body">
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>-</th>
|
||||
<th>-</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code><Space></code> <code>Ctrl</code> <code>I</code></td>
|
||||
<td>触发建议</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code><Space></code></td>
|
||||
<td>触发参数提示</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Shift</code> <code>Alt</code> <code>F</code></td>
|
||||
<td>格式化文档</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>Ctrl</code> <code>F</code></td>
|
||||
<td>格式选择</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>F12</code></td>
|
||||
<td>转到定义</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Alt</code> <code>F12</code></td>
|
||||
<td>窥视定义</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>F12</code></td>
|
||||
<td>打开定义到一边</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>.</code></td>
|
||||
<td>快速解决</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Shift</code> <code>F12</code></td>
|
||||
<td>显示参考</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>F2</code></td>
|
||||
<td>重命名符号</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>Ctrl</code> <code>X</code></td>
|
||||
<td>修剪尾随空格</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>M</code></td>
|
||||
<td>更改文件语言</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>编辑管理</h3><div class="warp-body">
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>-</th>
|
||||
<th>-</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>F4</code> <code>Ctrl</code> <code>W</code></td>
|
||||
<td>关闭编辑器</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>F</code></td>
|
||||
<td>关闭文件夹</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>\</code></td>
|
||||
<td>拆分编辑器</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>1</code> <em>/</em> <code>2</code> <em>/</em> <code>3</code></td>
|
||||
<td>专注于第一、第二或第三编辑组</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>Ctrl</code> <code>←</code> <em>/</em> <code>→</code></td>
|
||||
<td>专注于上一个/下一个编辑组</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>PgUp</code> <em>/</em> <code>PgDn</code></td>
|
||||
<td>向左/向右移动编辑器</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>←</code> <em>/</em> <code>→</code></td>
|
||||
<td>移动活动编辑器组</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>文件管理</h3><div class="warp-body">
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>-</th>
|
||||
<th>-</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>N</code></td>
|
||||
<td>新建文件</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>O</code></td>
|
||||
<td>打开文件</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>S</code></td>
|
||||
<td>保存</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>S</code></td>
|
||||
<td>另存为</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>S</code></td>
|
||||
<td>保存所有</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>F4</code></td>
|
||||
<td>关闭</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>Ctrl</code> <code>W</code></td>
|
||||
<td>关闭松油</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>T</code></td>
|
||||
<td>重新打开关闭的编辑器</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>Enter</code></td>
|
||||
<td>保持预览模式编辑器打开</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Tab</code></td>
|
||||
<td>Open next</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>Tab</code></td>
|
||||
<td>Open previous</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>P</code></td>
|
||||
<td>复制活动文件的路径</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>R</code></td>
|
||||
<td>在资源管理器中显示活动文件</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>O</code></td>
|
||||
<td>在新窗口/实例中显示活动文件</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>展示</h3><div class="warp-body">
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>-</th>
|
||||
<th>-</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>F11</code></td>
|
||||
<td>切换全屏</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Shift</code> <code>Alt</code> <code>0</code></td>
|
||||
<td>切换编辑器布局(水平/垂直)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>=</code> <em>/</em> <code>-</code></td>
|
||||
<td>放大/缩小</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>B</code></td>
|
||||
<td>切换侧边栏可见性</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>E</code></td>
|
||||
<td>显示资源管理器/切换焦点</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>F</code></td>
|
||||
<td>显示搜索</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>G</code></td>
|
||||
<td>显示源代码管理</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>D</code></td>
|
||||
<td>显示调试</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>X</code></td>
|
||||
<td>显示扩展</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>H</code></td>
|
||||
<td>在文件中替换</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>J</code></td>
|
||||
<td>切换搜索详细信息</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>U</code></td>
|
||||
<td>显示输出面板</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>V</code></td>
|
||||
<td>打开 Markdown 预览</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>V</code></td>
|
||||
<td>打开 Markdown 预览到一边</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>Z</code></td>
|
||||
<td>Zen 模式(Esc Esc 退出)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
</div></div></div><div class="warp"><div class="warp-header h3warp"><h3>调试</h3><div class="warp-body">
|
||||
<table class="table-thead-hide">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>-</th>
|
||||
<th>-</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>F9</code></td>
|
||||
<td>切换断点</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>F5</code></td>
|
||||
<td>开始/继续</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Shift</code> <code>F5</code></td>
|
||||
<td>停止</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Shift</code> <code>F11</code> <em>/</em> <code>F11</code></td>
|
||||
<td>进/出</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>F10</code></td>
|
||||
<td>跨过去</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>K</code> <code>Ctrl</code> <code>I</code></td>
|
||||
<td>显示悬停</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>`</code></td>
|
||||
<td>显示综合终端</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Shift</code> <code>`</code></td>
|
||||
<td>创建一个新终端</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>C</code></td>
|
||||
<td>复制选择</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>V</code></td>
|
||||
<td>粘贴到活动终端</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>↑</code> <em>/</em> <code>↓</code></td>
|
||||
<td>向上/向下滚动</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Shift</code> <code>PgUp</code> <em>/</em> <code>PgDn</code></td>
|
||||
<td>向上/向下滚动页面</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Ctrl</code> <code>Home</code> <em>/</em> <code>End</code></td>
|
||||
<td>滚动到顶部/底部</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><!--rehype:class=table-thead-hide-->
|
||||
|
||||
</div></div></div></div></div></div></div><footer class="footer-warp"><footer class="max-container">© 2022 Kenny Wang, All rights reserved.</footer></footer></body>
|
||||
</html>
|
37
index.html
Normal file
37
index.html
Normal file
@ -0,0 +1,37 @@
|
||||
<!doctype html>
|
||||
<html lang="en" data-color-mode="dark">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Quick Reference
|
||||
& Quick Reference</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta description="为开发人员分享快速参考备忘单(主要是方便自己),在看到 Reference 快速参考备忘单,感觉非常简单,造轮子使命感突然来了,造个中文版本的,为了方便自己的技术栈查阅,立马撸起来 :)。为开发人员分享快速参考备忘单。">
|
||||
<meta keywords="Quick,Reference">
|
||||
<link rel="stylesheet" href="style/style.css">
|
||||
</head>
|
||||
<body class="home"><nav class="header-nav"><div class="max-container"><a href="index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em"><path opacity=".5" d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="white"></path><path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#cbd5e1"></path><path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#292D32"></path></svg><span class="title">Quick Reference</span></a><div class="menu"><a href="https://github.com/jaywcjlove/reference/blob/main/README.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="warp max-container"><header class="warp-header h1warp"><h1>Quick Reference</h1><div class="warp-body">
|
||||
<p>为开发人员分享快速参考备忘单(主要是方便自己),在看到 <a href="https://github.com/Randy8080/reference">Reference</a> 快速参考备忘单,感觉非常简单,造轮子使命感突然来了,造个中文版本的,为了方便自己的技术栈查阅,立马撸起来 :)。</p>
|
||||
<p>如果您发现此处的备忘单不合适,您可以通过提交 PR 来修复它或提供更好的备忘清单,只针对【中文】用户。以下是开源天使提供的一些备忘清单和快速参考 :)。</p>
|
||||
</div></header><div class="h1warp-body"><div class="warp"><div class="warp-header h2warp"><h2>编程</h2><div class="warp-body">
|
||||
<p class="home-card">
|
||||
<a href="./docs/toml.html">TOML</a>
|
||||
<a href="./docs/typescript.html">TypeScript</a>
|
||||
<a href="./docs/javascript.html">JavaScript</a>
|
||||
<a href="./docs/json.html">JSON</a>
|
||||
<a href="./docs/markdown.html">Markdown</a>
|
||||
</p><!--rehype:class=home-card-->
|
||||
</div></div></div><div class="warp"><div class="warp-header h2warp"><h2>工具包</h2><div class="warp-body">
|
||||
<p class="home-card">
|
||||
<a href="./docs/vscode.html">VSCode</a>
|
||||
<a href="./docs/jest.html">Jest</a>
|
||||
</p><!--rehype:class=home-card-->
|
||||
</div></div></div><div class="warp"><div class="warp-header h2warp"><h2>Linux 命令</h2><div class="warp-body">
|
||||
<p class="home-card">
|
||||
<a href="./docs/cron.html">Cron</a>
|
||||
<a href="./docs/git.html">Git</a>
|
||||
</p><!--rehype:class=home-card-->
|
||||
</div></div></div><div class="warp"><div class="warp-header h2warp"><h2>License</h2><div class="warp-body">
|
||||
<p>MIT © <a href="https://github.com/jaywcjlove">Kenny Wong</a></p>
|
||||
|
||||
</div></div></div></div></div><footer class="footer-warp"><footer class="max-container">© 2022 Kenny Wang, All rights reserved.</footer></footer></body>
|
||||
</html>
|
612
style/style.css
Normal file
612
style/style.css
Normal file
@ -0,0 +1,612 @@
|
||||
body {
|
||||
-webkit-text-size-adjust: 100%;
|
||||
tab-size: 4;
|
||||
margin: 0;
|
||||
line-height: inherit;
|
||||
font-family: ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: rgb(15 23 42/1);
|
||||
color: rgb(203 213 225/1);
|
||||
}
|
||||
|
||||
*, ::before, ::after {
|
||||
box-sizing: border-box;
|
||||
border-width: 0;
|
||||
border-style: solid;
|
||||
border-color: #e5e7eb;
|
||||
}
|
||||
|
||||
blockquote, dl, dd, h1, h2, h3, h4, h5, h6, hr, figure, p, pre {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.max-container a, .max-container a:visited {
|
||||
color: rgb(2 132 199/1);
|
||||
text-decoration: none;
|
||||
background-image: linear-gradient(transparent,transparent 6px,#34495e 6px,#34495e);
|
||||
background-position: bottom;
|
||||
background-size: 100% 6px;
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
|
||||
.max-container a:hover, .max-container a:visited:hover{
|
||||
text-decoration-line: underline;
|
||||
text-decoration-color: #10b981;
|
||||
text-decoration-thickness: 2px;
|
||||
text-underline-offset: 4px;
|
||||
}
|
||||
|
||||
.max-container {
|
||||
max-width: 1320px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
padding: 0.75rem;
|
||||
}
|
||||
|
||||
body.home .h1warp-body, body.home .h1warp .warp-body {
|
||||
max-width: 940px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
padding: 0.75rem;
|
||||
}
|
||||
body.home .h2warp > h2 {
|
||||
display: inline-block;
|
||||
padding-right: 0.5rem;
|
||||
}
|
||||
|
||||
body.home .h2warp > h2::after {
|
||||
content: ' ';
|
||||
display: block;
|
||||
height: 3px;
|
||||
width: 110%;
|
||||
margin-top: 0.5rem;
|
||||
--bg-opacity: 1;
|
||||
background-color: rgb(30 41 59/var(--bg-opacity));
|
||||
}
|
||||
body.home .h1warp .warp-body p + p {
|
||||
margin-top: 1.6rem;
|
||||
}
|
||||
body.home .h1warp .warp-body p {
|
||||
text-indent: 2rem;
|
||||
}
|
||||
|
||||
|
||||
body.home .h1warp p {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.home-card {
|
||||
display: grid;
|
||||
gap: 2rem;
|
||||
grid-template-columns: repeat(4,minmax(0,1fr));
|
||||
}
|
||||
.home-card a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
border-radius: 0.5rem;
|
||||
padding: 1rem;
|
||||
color: rgb(30 41 59/1);
|
||||
box-shadow: 0 0 #0000,0 0 #0000,0 1px 2px 0 rgba(0,0,0,0.05);
|
||||
color: rgb(203 213 225/1);
|
||||
--bg-opacity: 0.5;
|
||||
background-color: rgb(62 69 72/var(--bg-opacity));
|
||||
transition: all .3s;
|
||||
}
|
||||
.home-card a:hover {
|
||||
--bg-opacity: 1;
|
||||
}
|
||||
|
||||
.header-nav .max-container {
|
||||
padding-top: 1.8rem;
|
||||
}
|
||||
|
||||
.header-nav .max-container, .header-nav .logo, .header-nav .menu, .header-nav .menu a {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.header-nav .logo {
|
||||
gap: 0.5rem;
|
||||
color: currentColor;
|
||||
}
|
||||
|
||||
.header-nav .title {
|
||||
font-size: 1.8rem;
|
||||
line-height: 2rem;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.header-nav .logo svg {
|
||||
font-size: 40px;
|
||||
}
|
||||
|
||||
.header-nav .menu a:hover {
|
||||
background-color: rgb(30 41 59/1);
|
||||
}
|
||||
|
||||
.header-nav .menu a {
|
||||
padding-left: 0.75rem;
|
||||
padding-right: 0.75rem;
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
border-radius: 9999px;
|
||||
transition: all .3s;
|
||||
}
|
||||
|
||||
.header-nav .menu {
|
||||
gap: 0.2rem;
|
||||
}
|
||||
.header-nav .menu a > span {
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.header-nav a, .header-nav a:visited {
|
||||
color: rgb(209 213 219/1);
|
||||
line-height: 1.2;
|
||||
gap: 0.3rem;
|
||||
}
|
||||
|
||||
.warp-header.h1warp {
|
||||
text-align: center;
|
||||
margin-top: 4.6rem;
|
||||
margin-bottom: 5rem;
|
||||
}
|
||||
|
||||
.warp-header.h1warp .warp-body {
|
||||
color: rgb(71 85 105/1);
|
||||
}
|
||||
|
||||
.warp-header.h1warp > h1 {
|
||||
font-size: 3rem;
|
||||
line-height: 1;
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
|
||||
.h1warp-body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 3rem;
|
||||
}
|
||||
|
||||
.warp-header.h2warp > h2 {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
margin-bottom: 24px;
|
||||
position: relative;
|
||||
font-size: 30px;
|
||||
line-height: 1.2;
|
||||
font-weight: 200;
|
||||
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.warp-header.h3warp {
|
||||
z-index: 0;
|
||||
display: flex;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.warp-header.h3warp > h3 {
|
||||
color: rgb(226 232 240/1);
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
top: 0px;
|
||||
z-index: 10;
|
||||
border-bottom-left-radius: 0.5rem;
|
||||
background-color: #228e6c;
|
||||
padding-left: 0.75rem;
|
||||
padding-right: 0.75rem;
|
||||
padding-top: 0.25rem;
|
||||
padding-bottom: 0.25rem;
|
||||
font-size: 0.75rem;
|
||||
line-height: 1rem;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
.warp-header.h3warp > .warp-body p, .warp-header.h4warp > .warp-body p {
|
||||
margin: 0px;
|
||||
width: 100%;
|
||||
padding-left: 1rem;
|
||||
padding-right: 1rem;
|
||||
padding-top: 0.75rem;
|
||||
padding-bottom: 0.75rem;
|
||||
color: rgb(148 163 184/1);
|
||||
background-color: rgb(15 23 42/0.3);
|
||||
}
|
||||
|
||||
.warp-header.h3warp > .warp-body p:first-child:before {
|
||||
background-color: rgb(15 23 42/0.3);
|
||||
color: rgb(30 41 59/0);
|
||||
content: '-';
|
||||
line-height: 1.75rem;
|
||||
top: -4px;
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.warp-header.h3warp > .warp-body p:last-child {
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
.warp-header.h3warp > .warp-body {
|
||||
z-index: 0;
|
||||
display: flex;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.h4warp > h4 {
|
||||
border-color: rgb(51 65 85/0.5);
|
||||
background-color: rgb(51 65 85/0.3);
|
||||
color: rgb(203 213 225/1);
|
||||
|
||||
margin: 0px;
|
||||
border-top-width: 1px;
|
||||
padding-left: 1rem;
|
||||
padding-right: 1rem;
|
||||
padding-top: 0.25rem;
|
||||
padding-bottom: 0.25rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
ol, ul, menu {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.h4warp > .warp-body ul,
|
||||
.h4warp > .warp-body ol,
|
||||
.h4warp > .warp-body dl,
|
||||
|
||||
.h3warp > .warp-body ul,
|
||||
.h3warp > .warp-body ol,
|
||||
.h3warp > .warp-body dl {
|
||||
margin-top: 0.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
display: grid;
|
||||
list-style-position: outside;
|
||||
grid-template-columns: repeat(1,minmax(0,1fr));
|
||||
}
|
||||
|
||||
.h2warp-body ul li,
|
||||
.h2warp-body ol li,
|
||||
.h2warp-body dl li {
|
||||
padding: 9px;
|
||||
padding-left: 26px;
|
||||
position: relative;
|
||||
border-bottom: solid 1px rgb(51 65 85/0.5);
|
||||
}
|
||||
|
||||
.h2warp-body ul:not(.style-none)>li::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
width: 4px;
|
||||
height: 4px;
|
||||
background: #556677;
|
||||
border-radius: 50%;
|
||||
left: 13px;
|
||||
top: 18px;
|
||||
}
|
||||
|
||||
.h2warp-body ul li,
|
||||
.h2warp-body ol li,
|
||||
.h2warp-body dl li {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.warp-body ul:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.warp-body ul:last-child li:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.h3warp hr {
|
||||
border-bottom: 1px solid #475060;
|
||||
}
|
||||
|
||||
.h2warp-body {
|
||||
display: grid;
|
||||
gap: 1.75rem;
|
||||
font-size: 0.925rem;
|
||||
line-height: 1.325rem;
|
||||
grid-template-columns: repeat(3,minmax(0,1fr));
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.h2warp-body > .warp {
|
||||
background-color: #1e293b;
|
||||
color: rgb(203 213 225/1);
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
border-radius: 0.5rem;
|
||||
padding-top: 1.5rem;
|
||||
box-shadow: 0 0 #0000, 0 0 #0000, 0 6px 8px rgba(102,119,136,0.03),0 1px 2px rgba(102,119,136,0.3);
|
||||
}
|
||||
|
||||
table {
|
||||
text-indent: 0;
|
||||
border-color: inherit;
|
||||
border-collapse: collapse
|
||||
}
|
||||
|
||||
|
||||
table td:not(:last-child)>code, kbd {
|
||||
background-color: rgb(51 65 85/0.5);
|
||||
color: rgb(203 213 225/1);
|
||||
box-shadow: 0 0 #0000, 0 0 #0000, 0 0 #0000;
|
||||
letter-spacing: 0.075rem;
|
||||
padding: 0.1em 0.54em;
|
||||
border: 1px solid rgb(204,204,204);
|
||||
border-color: rgb(51 65 85/1);
|
||||
line-height: 1.6;
|
||||
font-family: Arial,Helvetica,sans-serif;
|
||||
font-size: 12px;
|
||||
display: inline-block;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
table tr+tr {
|
||||
border-top: solid 1px #ececec94;
|
||||
border-color: rgb(51 65 85/0.5);
|
||||
}
|
||||
|
||||
table td:first-child {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table td, table th {
|
||||
padding: 9px 14px;
|
||||
text-align: left;
|
||||
}
|
||||
table tr th:last-child, table tr td:last-child {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
table thead th {
|
||||
white-space: nowrap;
|
||||
font-weight: normal;
|
||||
color: rgb(16 185 129/1);
|
||||
}
|
||||
|
||||
table thead {
|
||||
display: table-header-group;
|
||||
border-bottom: solid 1px rgba(85,102,119,0.3);
|
||||
}
|
||||
|
||||
.table-thead-hide thead {
|
||||
display: none;
|
||||
}
|
||||
|
||||
tt, code {
|
||||
font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
pre:only-child {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
|
||||
word-wrap: normal;
|
||||
line-height: 1.5;
|
||||
overflow: hidden;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.code-highlight {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.cols-1 {
|
||||
grid-template-columns: repeat(1,minmax(0,1fr));
|
||||
}
|
||||
.cols-2 {
|
||||
grid-template-columns: repeat(2,minmax(0,1fr));
|
||||
}
|
||||
.col-span-2 {
|
||||
grid-column: span 2/span 2;
|
||||
}
|
||||
.col-span-3 {
|
||||
grid-column: span 3/span 3;
|
||||
}
|
||||
.col-span-4 {
|
||||
grid-column: span 4/span 4;
|
||||
}
|
||||
.row-span-2 {
|
||||
grid-row: span 2/span 2;
|
||||
}
|
||||
.row-span-3 {
|
||||
grid-row: span 3/span 3;
|
||||
}
|
||||
.row-span-4 {
|
||||
grid-row: span 4/span 4;
|
||||
}
|
||||
.wrap {
|
||||
white-space: pre-wrap !important;
|
||||
overflow-wrap: break-word !important;
|
||||
}
|
||||
|
||||
[data-color-mode*='light'], [data-color-mode*='light'] body {
|
||||
--color-prettylights-syntax-comment: #6e7781;
|
||||
--color-prettylights-syntax-constant: #0550ae;
|
||||
--color-prettylights-syntax-entity: #8250df;
|
||||
--color-prettylights-syntax-storage-modifier-import: #24292f;
|
||||
--color-prettylights-syntax-entity-tag: #116329;
|
||||
--color-prettylights-syntax-keyword: #cf222e;
|
||||
--color-prettylights-syntax-string: #0a3069;
|
||||
--color-prettylights-syntax-variable: #953800;
|
||||
--color-prettylights-syntax-brackethighlighter-unmatched: #82071e;
|
||||
--color-prettylights-syntax-invalid-illegal-text: #f6f8fa;
|
||||
--color-prettylights-syntax-invalid-illegal-bg: #82071e;
|
||||
--color-prettylights-syntax-carriage-return-text: #f6f8fa;
|
||||
--color-prettylights-syntax-carriage-return-bg: #cf222e;
|
||||
--color-prettylights-syntax-string-regexp: #116329;
|
||||
--color-prettylights-syntax-markup-list: #3b2300;
|
||||
--color-prettylights-syntax-markup-heading: #0550ae;
|
||||
--color-prettylights-syntax-markup-italic: #24292f;
|
||||
--color-prettylights-syntax-markup-bold: #24292f;
|
||||
--color-prettylights-syntax-markup-deleted-text: #82071e;
|
||||
--color-prettylights-syntax-markup-deleted-bg: #FFEBE9;
|
||||
--color-prettylights-syntax-markup-inserted-text: #116329;
|
||||
--color-prettylights-syntax-markup-inserted-bg: #dafbe1;
|
||||
--color-prettylights-syntax-markup-changed-text: #953800;
|
||||
--color-prettylights-syntax-markup-changed-bg: #ffd8b5;
|
||||
--color-prettylights-syntax-markup-ignored-text: #eaeef2;
|
||||
--color-prettylights-syntax-markup-ignored-bg: #0550ae;
|
||||
--color-prettylights-syntax-meta-diff-range: #8250df;
|
||||
--color-prettylights-syntax-brackethighlighter-angle: #57606a;
|
||||
--color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;
|
||||
--color-prettylights-syntax-constant-other-reference-link: #0a3069;
|
||||
--color-fg-default: #24292f;
|
||||
--color-fg-muted: #57606a;
|
||||
--color-fg-subtle: #6e7781;
|
||||
--color-canvas-default: #ffffff;
|
||||
--color-canvas-subtle: #f6f8fa;
|
||||
--color-border-default: #d0d7de;
|
||||
--color-border-muted: hsla(210,18%,87%,1);
|
||||
--color-neutral-muted: rgba(175,184,193,0.2);
|
||||
--color-accent-fg: #0969da;
|
||||
--color-accent-emphasis: #0969da;
|
||||
--color-attention-subtle: #fff8c5;
|
||||
--color-danger-fg: #cf222e;
|
||||
}
|
||||
|
||||
[data-color-mode*='dark'], [data-color-mode*='dark'] body {
|
||||
--color-prettylights-syntax-comment: #8b949e;
|
||||
--color-prettylights-syntax-constant: #79c0ff;
|
||||
--color-prettylights-syntax-entity: #d2a8ff;
|
||||
--color-prettylights-syntax-storage-modifier-import: #c9d1d9;
|
||||
--color-prettylights-syntax-entity-tag: #7ee787;
|
||||
--color-prettylights-syntax-keyword: #ff7b72;
|
||||
--color-prettylights-syntax-string: #a5d6ff;
|
||||
--color-prettylights-syntax-variable: #ffa657;
|
||||
--color-prettylights-syntax-brackethighlighter-unmatched: #f85149;
|
||||
--color-prettylights-syntax-invalid-illegal-text: #f0f6fc;
|
||||
--color-prettylights-syntax-invalid-illegal-bg: #8e1519;
|
||||
--color-prettylights-syntax-carriage-return-text: #f0f6fc;
|
||||
--color-prettylights-syntax-carriage-return-bg: #b62324;
|
||||
--color-prettylights-syntax-string-regexp: #7ee787;
|
||||
--color-prettylights-syntax-markup-list: #f2cc60;
|
||||
--color-prettylights-syntax-markup-heading: #1f6feb;
|
||||
--color-prettylights-syntax-markup-italic: #c9d1d9;
|
||||
--color-prettylights-syntax-markup-bold: #c9d1d9;
|
||||
--color-prettylights-syntax-markup-deleted-text: #ffdcd7;
|
||||
--color-prettylights-syntax-markup-deleted-bg: #67060c;
|
||||
--color-prettylights-syntax-markup-inserted-text: #aff5b4;
|
||||
--color-prettylights-syntax-markup-inserted-bg: #033a16;
|
||||
--color-prettylights-syntax-markup-changed-text: #ffdfb6;
|
||||
--color-prettylights-syntax-markup-changed-bg: #5a1e02;
|
||||
--color-prettylights-syntax-markup-ignored-text: #c9d1d9;
|
||||
--color-prettylights-syntax-markup-ignored-bg: #1158c7;
|
||||
--color-prettylights-syntax-meta-diff-range: #d2a8ff;
|
||||
--color-prettylights-syntax-brackethighlighter-angle: #8b949e;
|
||||
--color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;
|
||||
--color-prettylights-syntax-constant-other-reference-link: #a5d6ff;
|
||||
--color-fg-default: #c9d1d9;
|
||||
--color-fg-muted: #8b949e;
|
||||
--color-fg-subtle: #484f58;
|
||||
--color-canvas-default: #0d1117;
|
||||
--color-canvas-subtle: #161b22;
|
||||
--color-border-default: #30363d;
|
||||
--color-border-muted: #21262d;
|
||||
--color-neutral-muted: rgba(110,118,129,0.4);
|
||||
--color-accent-fg: #58a6ff;
|
||||
--color-accent-emphasis: #1f6feb;
|
||||
--color-attention-subtle: rgba(187,128,9,0.15);
|
||||
--color-danger-fg: #f85149;
|
||||
}
|
||||
|
||||
/* 代码高亮 Start */
|
||||
.token.comment, .token.prolog, .token.doctype, .token.cdata {
|
||||
color: var(--color-prettylights-syntax-comment);
|
||||
}
|
||||
.token.namespace { opacity: 0.7; }
|
||||
.token.tag, .token.selector, .token.constant, .token.symbol, .token.deleted {
|
||||
color: var(--color-prettylights-syntax-entity-tag);
|
||||
}
|
||||
.token.maybe-class-name {
|
||||
color: var(--color-prettylights-syntax-variable);
|
||||
}
|
||||
.token.property-access, .token.operator, .token.boolean, .token.number, .token.selector .token.class, .token.attr-name, .token.string, .token.char, .token.builtin {
|
||||
color: var(--color-prettylights-syntax-constant);
|
||||
}
|
||||
.token.deleted {
|
||||
color: var(--color-prettylights-syntax-markup-deleted-text);
|
||||
}
|
||||
.token.property {
|
||||
color: var(--color-prettylights-syntax-constant);
|
||||
}
|
||||
.token.punctuation {
|
||||
color: var(--color-prettylights-syntax-markup-bold);
|
||||
}
|
||||
.token.function {
|
||||
color: var(--color-prettylights-syntax-entity);
|
||||
}
|
||||
.code-line .token.deleted {
|
||||
background-color: var(--color-prettylights-syntax-markup-deleted-bg);
|
||||
}
|
||||
.token.inserted {
|
||||
color: var(--color-prettylights-syntax-markup-inserted-text);
|
||||
}
|
||||
.code-line .token.inserted {
|
||||
background-color: var(--color-prettylights-syntax-markup-inserted-bg);
|
||||
}
|
||||
|
||||
.token.variable {
|
||||
color: var(--color-prettylights-syntax-constant);
|
||||
}
|
||||
.token.entity, .token.url, .language-css .token.string, .style .token.string {
|
||||
color: var(--color-prettylights-syntax-string);
|
||||
}
|
||||
.token.color, .token.atrule, .token.attr-value, .token.function, .token.class-name {
|
||||
color: var(--color-prettylights-syntax-string);
|
||||
}
|
||||
.token.rule, .token.regex, .token.important, .token.keyword {
|
||||
color: var(--color-prettylights-syntax-keyword);
|
||||
}
|
||||
.token.coord {
|
||||
color: var(--color-prettylights-syntax-meta-diff-range);
|
||||
}
|
||||
|
||||
.token.number {
|
||||
color: var(--color-accent-emphasis);
|
||||
}
|
||||
.token.string {
|
||||
color: var(--color-prettylights-syntax-string);
|
||||
}
|
||||
.token.boolean {
|
||||
color: var(--color-prettylights-syntax-markup-heading);
|
||||
}
|
||||
.token.property-access {
|
||||
color: var(--color-prettylights-syntax-variable);
|
||||
}
|
||||
|
||||
.token.important, .token.bold { font-weight: bold; }
|
||||
.token.italic { font-style: italic; }
|
||||
.token.entity { cursor: help; }
|
||||
|
||||
/* 代码高亮 End */
|
||||
|
||||
|
||||
.footer-warp {
|
||||
margin-top: 3.5rem;
|
||||
color: rgb(100 116 139/1);
|
||||
background-color: rgb(30 41 59/1);
|
||||
text-align: center;
|
||||
}
|
Reference in New Issue
Block a user