使用类型和接口而无需导入

问题描述 投票:1回答:1

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

在没有导出和导入类型的情况下使用它是否正确?

如果我从“node_modules”导入外部类型(比如来自react-native的ViewStyle)并在我的界面中使用它,它在IDE中显示“找不到名称”,我必须导出界面并将其导入到需要解决此问题的位置。

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

typescript typescript-typings typescript2.0
1个回答
0
投票

第一种选择:

您可以使用TS namespaces - 它将减少应用程序中的导入量(您不必手动从命名空间导入每种类型)。例如,假设我们有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;
  }
}

用法:

import { AppConfig } from './app.namespace';
// ...
baseConfig: AppConfig.BaseConfig;
myMap: AppConfig.MyMap<number>;
// ...

第二种选择:

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

检查这个Stackblitz demo

© www.soinside.com 2019 - 2024. All rights reserved.