前言
最近相统一管理 ts 中的类型声明,这就需要将各模块下的命名空间整合到全局的命名空间下,牵涉到从别的文件中引入命名空间并作为子命名空间在全局命名空间中统一暴露。
将命名空间A导入另一个命名空间B作为B的子命名空间
-
文件说明
assets.ts
文件中有包含资产相关类型声明的命名空间 Assets:export namespace Assets { export interface TV { id: number; price: string; } }
global.ts
文件中有全局统一暴露的命名空间 GlobalType:export namespace GlobalType { export interface User { prop: string; } }
-
需求:将
Assets
作为GlobalType
的子命名空间import { Assets } from './assets'; export namespace GlobalType { export import $Asstes = Assets; // 这里就将 Assets 命名空间作为 GlobalType 的子命名空间了 export interface User { prop: string; } }
全局暴露命名空间B
-
index.d.ts
:import { GlobalType } from '/global'; export = GlobalType; export as namespace GlobalType;
文件中直接使用全局命名空间进行类型声明
-
test.ts
:const TV1: GlobalType.Assets.TV = { id: 001, price: '¥3888' } // ts 检验通过 const TV2: GlobalType.Assets.TV = { id: 002, } // 提示没有 price 属性
版权声明:本文为m0_46627730原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。