【发布时间】:2020-12-04 05:56:51
【问题描述】:
我决定将整个项目所需的所有类型声明到一个 d.ts 文件中。
allTypes.d.ts
declare namespace PROJECT {
interface MY_INTERFACE {
// ...
}
}
仅通过声明该命名空间,我已经能够在我的所有项目文件中使用:
const something: PROJECT.MY_INTERFACE = {
// ...
};
到目前为止,这一直有效。
但现在我需要声明一个基于现有 JS 对象的新类型。
@constants/COLLECTIONS.ts
export const COLLECTIONS = {
PROP_A: "PROP_A",
PROP_B: "PROP_B",
PROP_C: "PROP_C",
};
所以我必须在我的 allTypes.d.ts 文件中执行以下操作。
allTypes.d.ts
import { COLLECTIONS } from "@constants/COLLECTIONS";
declare namespace PROJECT {
interface MY_INTERFACE {
// ...
}
type SOME_TYPE = keyof typeof COLLECTIONS // THIS IS WORKING FINE
}
问题是,仅仅通过在我的allTypes.d.ts 的顶层执行import,我的PROJECT 命名空间对于我的项目文件不再可见。
我该如何解决这个问题?
【问题讨论】:
-
想知道您是否能够找到解决方法?
标签: typescript namespaces typescript-typings .d.ts