在 svelte 文件中导出打字稿类型

export typescript type in svelte file

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

export type myNewType = {name: string};

当我添加 export:

时,linter 显示以下错误

Modifiers cannot appear here.

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

更新:

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

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

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

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

<p>some html</p>

一般来说,只要你想从另一个不是组件本身的 Svelte 文件中导入某些东西,你需要在 module-script.

中声明该导出

为了防止对任何人有帮助,我在将自己在 .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";