fix(eslint): reduce warnings in GitHub Actions deployment

- Disable formatting rules (handled by Prettier)
- Relaxed strict Vue/JS rules for demo code compatibility
- Fix syntax errors in ApiPlayground and VoiceCloningDemo
- Fix duplicate else-if condition in ApiPlayground
- Fix Promise executor async pattern in AutoregressiveAudioDemo
- Add TypeScript file support to ESLint config

Warnings reduced from 295 to 251 problems.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
sanbuphy
2026-02-18 17:38:10 +08:00
parent 8b01686e68
commit 0eba9e87e9
456 changed files with 28450 additions and 9677 deletions
@@ -16,89 +16,148 @@
<button
v-for="scenario in scenarios"
:key="scenario.id"
@click="activeScenario = scenario.id"
class="scenario-btn"
:class="{ active: activeScenario === scenario.id }"
@click="activeScenario = scenario.id"
>
{{ scenario.label }}
</button>
</div>
<!-- 方法调用 -->
<div v-if="activeScenario === 'method'" class="scenario-content">
<div
v-if="activeScenario === 'method'"
class="scenario-content"
>
<div class="split-view">
<div class="code-panel">
<div class="code-title">对象方法调用</div>
<div class="code-title">
对象方法调用
</div>
<div class="code-block">
<div class="code-line">const person = {</div>
<div class="code-line indent">name: "张三",</div>
<div class="code-line indent">greet: function() {</div>
<div class="code-line indent indent">return "你好,我是" + this.name</div>
<div class="code-line indent">}</div>
<div class="code-line">}</div>
<div class="code-line"></div>
<div class="code-line">person.greet() <span class="comment">// this → person</span></div>
<div class="code-line">
const person = {
</div>
<div class="code-line indent">
name: "张三",
</div>
<div class="code-line indent">
greet: function() {
</div>
<div class="code-line indent indent">
return "你好,我是" + this.name
</div>
<div class="code-line indent">
}
</div>
<div class="code-line">
}
</div>
<div class="code-line" />
<div class="code-line">
person.greet() <span class="comment">// this → person</span>
</div>
</div>
</div>
<div class="visual-panel">
<div class="object-visual">
<div class="object-box">
<div class="object-title">person 对象</div>
<div class="object-title">
person 对象
</div>
<div class="object-content">
<div class="property">name: "张三"</div>
<div class="method" @click="simulateMethodCall">
<div class="property">
name: "张三"
</div>
<div
class="method"
@click="simulateMethodCall"
>
greet: function() { ... }
</div>
</div>
</div>
<div class="arrow-indicator">
<div class="this-pointer">this </div>
<div class="this-pointer">
this
</div>
</div>
<div v-if="methodCallResult" class="result-box">
<div
v-if="methodCallResult"
class="result-box"
>
{{ methodCallResult }}
</div>
</div>
<div class="rule-box">
<div class="rule-title">规则对象方法</div>
<div class="rule-content">通过对象调用方法时<code>this</code> 指向该对象</div>
<div class="rule-title">
规则对象方法
</div>
<div class="rule-content">
通过对象调用方法时<code>this</code> 指向该对象
</div>
</div>
</div>
</div>
</div>
<!-- 普通函数 -->
<div v-else-if="activeScenario === 'function'" class="scenario-content">
<div
v-else-if="activeScenario === 'function'"
class="scenario-content"
>
<div class="split-view">
<div class="code-panel">
<div class="code-title">普通函数调用</div>
<div class="code-title">
普通函数调用
</div>
<div class="code-block">
<div class="code-line">function show() {</div>
<div class="code-line indent">return this === window</div>
<div class="code-line">}</div>
<div class="code-line"></div>
<div class="code-line">show() <span class="comment">// this → window (浏览器)</span></div>
<div class="code-line"></div>
<div class="code-line comment">// 严格模式下是 undefined</div>
<div class="code-line">
function show() {
</div>
<div class="code-line indent">
return this === window
</div>
<div class="code-line">
}
</div>
<div class="code-line" />
<div class="code-line">
show() <span class="comment">// this → window (浏览器)</span>
</div>
<div class="code-line" />
<div class="code-line comment">
// 严格模式下是 undefined
</div>
</div>
</div>
<div class="visual-panel">
<div class="function-visual">
<div class="global-window">
<div class="window-title">window (全局对象)</div>
<div class="window-title">
window (全局对象)
</div>
<div class="window-content">
<div class="global-item">show 函数在这里</div>
<div class="global-item">this window</div>
<div class="global-item">
show 函数在这里
</div>
<div class="global-item">
this window
</div>
</div>
</div>
</div>
<div class="mode-toggle">
<button @click="strictMode = !strictMode" class="toggle-btn">
<button
class="toggle-btn"
@click="strictMode = !strictMode"
>
{{ strictMode ? '严格模式:开' : '严格模式:关' }}
</button>
<div class="mode-result">
@@ -107,7 +166,9 @@
</div>
<div class="rule-box">
<div class="rule-title">规则普通函数</div>
<div class="rule-title">
规则普通函数
</div>
<div class="rule-content">
非严格模式<code>this</code> 指向全局对象<br>
严格模式<code>this</code> <code>undefined</code>
@@ -118,20 +179,39 @@
</div>
<!-- 构造函数 -->
<div v-else-if="activeScenario === 'constructor'" class="scenario-content">
<div
v-else-if="activeScenario === 'constructor'"
class="scenario-content"
>
<div class="split-view">
<div class="code-panel">
<div class="code-title">构造函数调用</div>
<div class="code-title">
构造函数调用
</div>
<div class="code-block">
<div class="code-line">function Person(name) {</div>
<div class="code-line indent">this.name = name</div>
<div class="code-line">}</div>
<div class="code-line"></div>
<div class="code-line">const p1 = new Person("李四")</div>
<div class="code-line">const p2 = new Person("王五")</div>
<div class="code-line"></div>
<div class="code-line comment">// p1.name = "李四"</div>
<div class="code-line comment">// p2.name = "王五"</div>
<div class="code-line">
function Person(name) {
</div>
<div class="code-line indent">
this.name = name
</div>
<div class="code-line">
}
</div>
<div class="code-line" />
<div class="code-line">
const p1 = new Person("李四")
</div>
<div class="code-line">
const p2 = new Person("王五")
</div>
<div class="code-line" />
<div class="code-line comment">
// p1.name = "李四"
</div>
<div class="code-line comment">
// p2.name = "王五"
</div>
</div>
</div>
@@ -142,17 +222,23 @@
<span class="step-num">1</span>
<span>创建新对象</span>
</div>
<div class="process-arrow"></div>
<div class="process-arrow">
</div>
<div class="process-step">
<span class="step-num">2</span>
<span>this 指向新对象</span>
</div>
<div class="process-arrow"></div>
<div class="process-arrow">
</div>
<div class="process-step">
<span class="step-num">3</span>
<span>执行构造函数</span>
</div>
<div class="process-arrow"></div>
<div class="process-arrow">
</div>
<div class="process-step">
<span class="step-num">4</span>
<span>返回新对象</span>
@@ -161,18 +247,28 @@
<div class="object-comparison">
<div class="obj-instance">
<div class="obj-title">p1</div>
<div class="obj-content">name: "李四"</div>
<div class="obj-title">
p1
</div>
<div class="obj-content">
name: "李四"
</div>
</div>
<div class="obj-instance">
<div class="obj-title">p2</div>
<div class="obj-content">name: "王五"</div>
<div class="obj-title">
p2
</div>
<div class="obj-content">
name: "王五"
</div>
</div>
</div>
</div>
<div class="rule-box">
<div class="rule-title">规则new 调用</div>
<div class="rule-title">
规则new 调用
</div>
<div class="rule-content">
使用 <code>new</code> 调用函数时<code>this</code> 指向新创建的对象
</div>
@@ -182,52 +278,104 @@
</div>
<!-- call/apply/bind -->
<div v-else-if="activeScenario === 'explicit'" class="scenario-content">
<div
v-else-if="activeScenario === 'explicit'"
class="scenario-content"
>
<div class="split-view">
<div class="code-panel">
<div class="code-title">显式绑定 (call/apply/bind)</div>
<div class="code-title">
显式绑定 (call/apply/bind)
</div>
<div class="code-block">
<div class="code-line">function greet() {</div>
<div class="code-line indent">return "我是" + this.name</div>
<div class="code-line">}</div>
<div class="code-line"></div>
<div class="code-line">const person = { name: "小明" }</div>
<div class="code-line"></div>
<div class="code-line">greet.call(person) <span class="comment">// 显式指定 this</span></div>
<div class="code-line">greet.apply(person)</div>
<div class="code-line">const bound = greet.bind(person)</div>
<div class="code-line">
function greet() {
</div>
<div class="code-line indent">
return "我是" + this.name
</div>
<div class="code-line">
}
</div>
<div class="code-line" />
<div class="code-line">
const person = { name: "小明" }
</div>
<div class="code-line" />
<div class="code-line">
greet.call(person) <span class="comment">// 显式指定 this</span>
</div>
<div class="code-line">
greet.apply(person)
</div>
<div class="code-line">
const bound = greet.bind(person)
</div>
</div>
</div>
<div class="visual-panel">
<div class="binding-visual">
<div class="function-box">
<div class="box-title">greet 函数</div>
<div class="box-content">this.name</div>
<div class="box-title">
greet 函数
</div>
<div class="box-content">
this.name
</div>
</div>
<div class="binding-methods">
<div class="binding-item" @click="simulateCall" :class="{ active: bindingMethod === 'call' }">
<div class="method-name">call(person)</div>
<div class="method-desc">立即调用this person</div>
<div
class="binding-item"
:class="{ active: bindingMethod === 'call' }"
@click="simulateCall"
>
<div class="method-name">
call(person)
</div>
<div class="method-desc">
立即调用this person
</div>
</div>
<div class="binding-item" @click="simulateApply" :class="{ active: bindingMethod === 'apply' }">
<div class="method-name">apply(person)</div>
<div class="method-desc"> call参数为数组</div>
<div
class="binding-item"
:class="{ active: bindingMethod === 'apply' }"
@click="simulateApply"
>
<div class="method-name">
apply(person)
</div>
<div class="method-desc">
call参数为数组
</div>
</div>
<div class="binding-item" @click="simulateBind" :class="{ active: bindingMethod === 'bind' }">
<div class="method-name">bind(person)</div>
<div class="method-desc">返回新函数this 固定</div>
<div
class="binding-item"
:class="{ active: bindingMethod === 'bind' }"
@click="simulateBind"
>
<div class="method-name">
bind(person)
</div>
<div class="method-desc">
返回新函数this 固定
</div>
</div>
</div>
<div v-if="bindingResult" class="binding-result">
<div
v-if="bindingResult"
class="binding-result"
>
{{ bindingResult }}
</div>
</div>
<div class="rule-box">
<div class="rule-title">规则显式绑定</div>
<div class="rule-title">
规则显式绑定
</div>
<div class="rule-content">
<code>call/apply/bind</code> 可以显式指定 <code>this</code> 的指向
</div>
@@ -237,48 +385,85 @@
</div>
<!-- 箭头函数 -->
<div v-else class="scenario-content">
<div
v-else
class="scenario-content"
>
<div class="split-view">
<div class="code-panel">
<div class="code-title">箭头函数的 this</div>
<div class="code-title">
箭头函数的 this
</div>
<div class="code-block">
<div class="code-line">const person = {</div>
<div class="code-line indent">name: "小红",</div>
<div class="code-line indent">greet: function() {</div>
<div class="code-line indent indent">setTimeout(() => {</div>
<div class="code-line indent indent indent">console.log(this.name)</div>
<div class="code-line indent indent">}, 1000)</div>
<div class="code-line indent">}</div>
<div class="code-line">}</div>
<div class="code-line"></div>
<div class="code-line">person.greet() <span class="comment">// 输出 "小红"</span></div>
<div class="code-line">
const person = {
</div>
<div class="code-line indent">
name: "小红",
</div>
<div class="code-line indent">
greet: function() {
</div>
<div class="code-line indent indent">
setTimeout(() => {
</div>
<div class="code-line indent indent indent">
console.log(this.name)
</div>
<div class="code-line indent indent">
}, 1000)
</div>
<div class="code-line indent">
}
</div>
<div class="code-line">
}
</div>
<div class="code-line" />
<div class="code-line">
person.greet() <span class="comment">// 输出 "小红"</span>
</div>
</div>
</div>
<div class="visual-panel">
<div class="arrow-function-visual">
<div class="outer-context">
<div class="context-title">外层作用域 (person)</div>
<div class="context-title">
外层作用域 (person)
</div>
<div class="context-content">
<div class="context-item">this.name = "小红"</div>
<div class="context-item">
this.name = "小红"
</div>
</div>
</div>
<div class="arrow-capture">
<div class="capture-title">箭头函数捕获外层 this</div>
<div class="capture-arrow"> 继承 this</div>
<div class="capture-title">
箭头函数捕获外层 this
</div>
<div class="capture-arrow">
继承 this
</div>
</div>
<div class="inner-context">
<div class="context-title">箭头函数内部</div>
<div class="context-title">
箭头函数内部
</div>
<div class="context-content">
<div class="context-item">this 外层的 this</div>
<div class="context-item">
this 外层的 this
</div>
</div>
</div>
</div>
<div class="rule-box">
<div class="rule-title">规则箭头函数</div>
<div class="rule-title">
规则箭头函数
</div>
<div class="rule-content">
箭头函数没有自己的 <code>this</code>它继承外层作用域的 <code>this</code>
</div>
@@ -288,7 +473,9 @@
</div>
<div class="quick-reference">
<div class="reference-title">📋 this 指向速查表</div>
<div class="reference-title">
📋 this 指向速查表
</div>
<div class="reference-table">
<div class="ref-row header">
<span>调用方式</span>