【问题标题】:export typescript type in svelte file在 svelte 文件中导出 typescript 类型
【发布时间】:2021-01-11 19:29:48
【问题描述】:

我想导出我在一个文件中定义的类型并将其导入另一个文件中。

export type myNewType = {name: string};

当我添加 export 时,linter 显示以下错误:

Modifiers cannot appear here.

我可以通过创建一个新的ts 文件并从中导入类型来使其工作。我只想知道是否有办法在svelte 文件中定义类型。

更新:

我使用 sapper 模板,它可以正常运行,但 TS 功能不起作用,并在从 svelte 文件导入类型和导出类型时在 vscode 中显示错误。

【问题讨论】:

  • 我猜这只是 linter 的问题。当你运行 TypeScript 检查它是否有效?
  • 是的,它将毫无错误地运行。我使用 sapper,但导入类型也会显示错误并且自动完成功能不起作用。
  • svelte 中的 TypeScript 支持确实是新的,所以我猜这只是您使用的 linter 的问题(而不是 svelte 使用的 TypeScript 编译器)。您使用的是哪种 linter?
  • 我没有设置任何 linter,我猜是 sapper default linter

标签: typescript svelte sapper


【解决方案1】:

您需要从模块脚本导出类型,而不是普通脚本。您还需要在普通脚本或模块脚本上添加lang="ts" 属性。这将起作用:

<script context="module" lang="ts">
  export type myNewType = {name: string};
</script>

<script>
  export let aProp: string;
</script>

<p>some html</p>

一般来说,当你想从另一个 Svelte 文件中导入某些东西而不是组件本身时,你需要在模块脚本中声明那个导出。

【讨论】:

    【解决方案2】:

    以防万一它对任何人有帮助,我在将自己在 .ts 文件中声明的类型导入另一个库文件时遇到问题:

    我的类型声明如下:

    export type UserAuth = {
        name: string,
        email: string,
        token: ''
    };
    

    在我的 /lib/auth.ts 文件中,我尝试按如下方式导入它:

    import { UserAuth } from "../types/user.auth";
    

    其中产生了类型尚未导出的错误。

    以下解决了我的问题:

    import type { UserAuth } from "../types/user.auth";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      • 1970-01-01
      • 2020-08-09
      • 2021-06-12
      • 2022-01-23
      • 1970-01-01
      • 2022-08-23
      相关资源
      最近更新 更多