最近相统一管理 ts 中的类型声明,这就需要将各模块下的命名空间整合到全局的命名空间下,牵涉到从别的文件中引入命名空间并作为子命名空间在全局命名空间中统一暴露。
文件说明
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;}
}
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 属性