写点什么

TypeScript Module

作者:程序员海军
  • 2023-04-23
    上海
  • 本文字数:1653 字

    阅读完需:约 5 分钟

TypeScript Module

模块导出

模块导出 通过 export / export default 进行导出文件中数据和方法。


//  util.ts
export const token = "asdasjkh3242341asd"
export function getBasicData(){ console.log("获取基础数据")}
export type receiveData = { code:Number, data:Object,}
export type axiosParams = { methods: String, url:String, params: any}

export default { baseInfo:{ id:22, name:"基础信息" } }
复制代码

模块导入

export default

这种方式导出的数据,使用模块时 通过以下方式导入使用


import util  from "./util"

util.token
util.getBasicData()
复制代码

export

这种方式导出的数据,使用模块时 通过以下方式导入使用


import {token,getBasicData } from "./util"
token
getBasicData
复制代码

as 别名

当页面中有和导入的数据重名时,通过 as 定义一个别名 使用。


import util,{token,getBasicData as getData} from "./util"

getData()
复制代码

* as name

还可以将模块中所有对象 放入一个命名空间,然后调用使用


import * as app from "./util"
console.log(app.token)

app.getBasicData()
复制代码


TypeScript 导入玩法

当导入 type 时,它有 3 种导入方法,使用哪种都可以,看自己喜好。ta 模块文件


export type  ReceiveData =  {    code:Number,    data:Object,}
export type AxiosParams = { methods: String, url:String, params: any}

export interface GPT { say:Function, name:String, draw:Function}

export interface AUTOGPt extends GPT{ auto:Function}
export interface AI extends GPT {}
复制代码

第一种

通过 type { type1,type2 } 导入使用,这种导入方式可以很清晰的知道导入了哪些 type


import type {ReceiveData,AxiosParams} from "./util"
复制代码

第二种

直接 通过 import {} from '模块' 导入,缺点是不好分辨哪个是 type


import {ReceiveData,AxiosParams} from "./util"
复制代码

第三种

TypeScript 4.5 还允许单个导入以 type 为前缀,以指示导入的引用是类型:


import {type ReceiveData, type AxiosParams} from "./util"
复制代码


体验一下模块的乐趣

//模块 util.ts 文件

export type ReceiveData = { code:Number, data:Object,}
export type AxiosParams = { methods: String, url:String, params: any}
export interface GPT { say:Function, name:String, draw:Function}

export interface AUTOGPt extends GPT{ auto:Function}
export interface AI extends AUTOGPt {}


复制代码


import {type ReceiveData, type AxiosParams} from "./util"
import * as app from "./util"



const axiosParams: AxiosParams = { methods:"GET", url: "api/getAllData", params:{ limit:10, page:2 }}

const aiX : app.AI = { say:function(){ console.log("我具有 问答功能") }, name:"我是AI 超神", draw:function(){ console.log("我具有 绘画功能") }, auto:function(){ console.log("我具有 自动工作功能") }}
复制代码


上面代码中,第一个文件是我们定义的模块,定义了 两个 type 三个interface, 在第二个文件中,我们导入模块,使用类型标注,这样可以很好的得知我们的数据结构是什么。

Common.js 导入导出

CommonJS 是 npm 上大多数模块的格式。

导出

通过 module.exports 导出模块数据


const loginStatus = false
function getUserInfo(){ console.log("获取用户基本信息")}


module.exports = { loginStatus, getUserInfo}
复制代码

导入

通过 require(模块文件位置) 导入


//第一种导入方式const basic = require('./basic')//第二种导入方式const {loginStatus,getUserInfo} = require('./basic')

console.log(basic.loginStatus)
复制代码

TypeScript 模块解析原理

:::successhttps://www.typescriptlang.org/docs/handbook/module-resolution.html:::


发布于: 刚刚阅读数: 4
用户头像

🏆微信公众号:【前端自学社区】 2020-04-02 加入

🏅目前从事物流,铁路相关的前端全栈开发工作. 🏆 InfoQ 首批签约作者 🏆荣获2021/2022年度社区共建奖 😊个人微信: daxin261

评论

发布
暂无评论
TypeScript Module_三周年连更_程序员海军_InfoQ写作社区