全局声明通用类型

时间:2018-10-29 14:09:51

标签: node.js typescript

我正在尝试全局声明ts类型。我有类似type Nullable<T> = T | null这样的东西,用于项目文件中。我不想在每个文件中复制此部分。我试图在declarations.tsdeclarations.d.ts中声明这种类型,例如declare type Nullable<T> = T | null,我的IDE和编译器对此都可以,但是当我将此项目用作另一个项目中的模块(导入)时,然后出现错误:d.ts文件中的Cannot find name 'Nullable'

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

2 个答案:

答案 0 :(得分:1)

您可以在global中声明该类型,以使该类型可以在不进行任何导入的情况下全局访问。

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

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

答案 1 :(得分:0)

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

// lib.ts
export type Nullable<T> = T | null;

// main.ts
import { Nullable } from "./lib.ts";

let a: Nullable = null;

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