【问题标题】:Declare generic type globally [duplicate]全局声明泛型类型
【发布时间】:2019-04-02 11:48:04
【问题描述】:

我正在尝试全局声明 ts 类型。我有这样的type Nullable<T> = T | null,它在项目文件中使用。我不想在每个文件中复制这部分。我尝试在declarations.tsdeclarations.d.ts 中声明此类型,就像declare type Nullable<T> = T | null 一样,我的IDE 和编译器对此没有问题,但是当我将此项目用作另一个项目中的模块(导入)时,我收到错误消息: Cannot find name 'Nullable' 在 d.ts 文件中。

你能帮我如何在全局范围内声明这个泛型类型吗?你有什么想法?感谢您的回复。

【问题讨论】:

    标签: node.js typescript


    【解决方案1】:

    不确定您要做什么,但您可以使用导出:

    // lib.ts
    export type Nullable<T> = T | null;
    
    // main.ts
    import { Nullable } from "./lib.ts";
    
    let a: Nullable = null;
    

    当然,您仍然需要在每个文件的顶部添加导入语句。

    【讨论】:

      【解决方案2】:

      您可以在 global 中声明该类型,以使该类型无需任何导入即可全局访问。

      declare global {
          type Nullable<T> = T | null
      }
      

      注意 与全局命名空间中的任何内容一样,您将面临与其他模块发生名称冲突的风险。

      【讨论】:

      • 啊,谢谢! :-)
      猜你喜欢
      • 2015-12-14
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多