Typescript - 将命名空间A导入另一个命名空间B作为B的子命名空间,并全局暴露命名空间B

文章讲述了如何在TypeScript中将特定模块的命名空间如Assets导入并作为全局命名空间GlobalType的子命名空间,以便于统一管理类型声明。在global.ts中,通过exportimport方式实现了Assets在GlobalType下的暴露,并在index.d.ts中全局导出,使得其他文件能直接使用GlobalType.Assets进行类型引用。
摘要由CSDN通过智能技术生成

前言

最近相统一管理 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 属性
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值