在 SvelteKit 项目中全局包含类型

Cli*_*rum 1 typescript tsconfig svelte sveltekit

SvelteKit v1.0.0-next.354

在我的所有商店、组件和 API 中,我必须手动设置import类型才能使用它们,以防止 VS Code 中出现 TypeScript 错误:

import type { MyType } from '$lib/types`
Run Code Online (Sandbox Code Playgroud)

我尝试将我的类放入其中app.d.ts,但这没有用。

declare namespace App{
  export class Aircraft{
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

对于一个包含数十个文件的非常大的项目来说,这变得相当麻烦。

有没有某种方法可以将我的所有类型全局包含在一个位置,以便它们可以在我的项目中的任何文件中使用?我对 TypeScript 很陌生,不确定它是如何工作的。

H.B*_*.B. 5

当您使用 a 时,namespace您必须使用以所述名称空间作为前缀的类型,例如:

const a: App.Aircraft = { ... };
Run Code Online (Sandbox Code Playgroud)

如果你不想这样,你应该直接声明类型:

declare class Aircraft {
  ...
}
Run Code Online (Sandbox Code Playgroud)

然后你就可以使用:

const a: Aircraft = { ... };
Run Code Online (Sandbox Code Playgroud)

请注意,这仅使类型定义可用,而不使类型实现可用。当您将其声明为class而不是 时interface,这表明可以使用 构造此类型new。仅在范围内包含类型是不允许的。