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

Ali*_*eza 5 typescript svelte sapper

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

export type myNewType = {name: string};
Run Code Online (Sandbox Code Playgroud)

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

Modifiers cannot appear here.

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

更新:

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

dum*_*umm 8

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

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

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

<p>some html</p>
Run Code Online (Sandbox Code Playgroud)

通常,每当您想从另一个 Svelte 文件(不是组件本身)导入某些内容时,您都需要在模块脚本中声明该导出。


Mus*_*tel 7

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

我的类型声明如下:

export type UserAuth = {
    name: string,
    email: string,
    token: ''
};
Run Code Online (Sandbox Code Playgroud)

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

import { UserAuth } from "../types/user.auth";
Run Code Online (Sandbox Code Playgroud)

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

以下内容为我解决了这个问题:

import type { UserAuth } from "../types/user.auth";
Run Code Online (Sandbox Code Playgroud)