无需导入即可使用类型和接口

Bij*_*joy 6 typescript typescript-typings typescript2.0

我最近转向 typescript 来编写 React-Native 应用程序,我注意到的一件事是,我可以使用类型而无需导入/导出它。我已将所有定义文件放在@types 文件夹下。

这是不导出和导入类型的正确使用方法吗?

如果我从“node_modules”(比如 react-native 的 ViewStyle)导入外部类型并在我的界面中使用它,它会在 IDE 中显示“找不到名称”,我必须导出界面并在需要的地方导入它来解决这个问题.

注意:我正在尝试减少导入,IDE:vscode

sho*_*ukh 8

第一个选项:

您可以使用TS 命名空间- 它将减少应用程序中的导入量(您不必手动从命名空间导入每种类型)。例如,假设我们有app.namespace.ts文件:

export namespace AppConfig {
  export interface BaseConfig {
    url: string;
    port: number;
  }

  export type MyMap<T> = {
    [key: string]: T;
  }

  export class Settings {
    public p1: boolean;
    public p2: number;
  }
}
Run Code Online (Sandbox Code Playgroud)

用法:

import { AppConfig } from './app.namespace';
// ...
baseConfig: AppConfig.BaseConfig;
myMap: AppConfig.MyMap<number>;
// ...
Run Code Online (Sandbox Code Playgroud)

第二个选项:

只需.d.ts在项目中创建文件(通常每个应用程序子模块都有自己的模型文件,因此您可以some-feature.d.ts在功能文件夹中创建)。在这种情况下,您可以使用 d.ts 文件中的任何类型而无需导入。

检查这个Stackblitz 演示

  • 如果我有大量接口并且我不想让 20-30 个 interfacename.d.ts 文件挂在我的主文件夹中怎么办?我也不想将它们全部放在同一个文件中。您建议如何处理这个问题? (2认同)