Typescript - 将命名空间A导入另一个命名空间B作为B的子命名空间,并全局暴露命名空间B
创始人
2024-05-30 15:03:13

前言

最近相统一管理 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 属性
    

相关内容

热门资讯

齐心协力开创振兴发展新局面——... (来源:东北新闻网)  如何深入理解全会精神?如何不折不扣抓好落实?连日来,全省广大干部群众深入学习...
前10个月云南农产品出口值16...   本报讯 记者缪亚平 通讯员杜锋报道 昆明海关统计数据显示,2025年前10个月,云南农产品出口值...
“宝藏小城”乘风起 (来源:中国妇女报)转自:中国妇女报  ▲游客在漠河北极村“神州北极”碑前打卡拍照。  新华社发(徐...
顺义大剧院为首都舞台注入“活水...   本报记者 韩轩  天桥剧场灯光渐暗,青年舞蹈家胡阳一袭白衣翩然起舞,手中的长剑划出弧光,掌声如潮...
备战2026“苏超” 无锡队首... 来源:江南晚报  “不管能不能选上,能站在这里试训,就离我的‘苏超’梦近了一步!”昨天(11月30日...