如何禁用Svelte组件HTML部分的svelte-check错误?

问题描述 投票:0回答:1

我有一个用 Svelte 5 编写的组件,使用 $props() rune。

LogActions.svelte

<script lang="ts">
  //@ts-expect-error
  let { onSave }: { (): void } = $props() ;

</script>

<div class="panel fullsize">

  <button onclick={onSave}>Log QSO</button>
  <button>Delete Last</button>
  <button>Undelete</button>
  <button>Edit Last</button>
</div>

<style>
   .fullsize { width: 100% }
</style>

请注意:如果没有 //@ts-expect-error 指令,该文件会导致 svelte-check 错误

Error: Property 'onSave' does not exist on type '$$ComponentProps'. (ts)

该组件在其父组件 EntryPanel.svelte 中使用,这样:

<script lang="ts">

  import LogActions from './LogActions.svelte'

  function onSave(): void {
    const content = JSON.stringify(Object.fromEntries(qso))
    console.log(content)
    //@ts-expect-error
    window.api.saveQso( content )
  }

</script>
...
  <LogActions {onSave} />

最后一行生成 svelte-check 错误

c:\Users\jvavruska\dev\log73se\src\renderer\src\components\EntryPanel.svelte:41:16
Error: Object literal may only specify known properties, and 'onSave' does not exist in type '$$ComponentProps'. (ts)

  <LogActions {onSave} />
</div>

与打字稿部分中的错误不同,可以通过使用

//@ts-ignore
//@ts-expect-error
来避免,对于此错误,我找不到任何指令或提示如何禁用该错误。

结果是,尽管应用程序在开发模式下运行良好,但通过生成无意义的错误来进行精简检查会阻止构建 Windows 的 exe 文件。

我该如何解决这个问题?

electron-builder svelte-component svelte-5
1个回答
0
投票

我的解决方案最终并不是解决方案,但它解除了构建过程的阻碍。

安装示例电子-svelte脚手架后,package.json中定义了许多脚本:

 "scripts": {
    "format": "prettier --plugin prettier-plugin-svelte --write .",
    "lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix",
    "typecheck:node": "tsc --noEmit -p tsconfig.node.json --composite false",
    "svelte-check": "svelte-check --tsconfig tsconfig.json",
    "typecheck": "npm run typecheck:node && npm run svelte-check",
    "start": "electron-vite preview",
    "dev": "electron-vite dev",
    "build": "npm run typecheck && electron-vite build",
    "postinstall": "electron-builder install-app-deps",
    "build:unpack": "npm run build && electron-builder --dir",
    "build:win": "npm run build && electron-builder --win",
    "build:mac": "npm run build && electron-builder --mac",
    "build:linux": "npm run build && electron-builder --linux"
  },

我的“解决方案”是简单地删除类型检查脚本中对 svelte-check 的调用:

    "typecheck": "npm run typecheck:node",

毕竟,在这种情况下,svelte-check 不会带来任何新的好处,因为构建过程(svelte 编译器)报告完全相同的警告(和错误,如果有的话),但不会引发由细长检查。

正如预期的那样,编译为 *.exe 的应用程序运行良好,与开发版本完全相同。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.