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 属性
    

相关内容

热门资讯

切入算力租赁!“环卫第一股”拟... A股“环卫第一股”侨银股份(002973)宣布切入算力租赁赛道。9月9日晚间,公司披露,拟向供应商(...
闯杆逃费,未逃过刑罚 《法治日报》记者  胡新桥《法治日报》见习记者 答 笛□于诗祺“我原以为即使被发现,也只是补缴费用,...
46名务工“宝妈”成功追讨16... 《法治周末》记者 杨东风□靳程 刘续“厂子就在家门口,骑车十分钟就到,下午4点还能赶回去接孩子放学。...
E法周见| 厘清音乐产业AI辅... 《法治周末》记者 仇飞9月5日,在第四届浪潮音乐大赏·创作人论坛现场,一场题为“AI生成时代,原创如...
双向投资成热点,国内企业出海该...   第二十六届投洽会刚在厦门落下帷幕,"中国投资"展区的热度一点不比"投资中国"低。很多国内企业在展...