typescript import、export相关

支持js的所有导出方式
	export:导出声明或表达式(export {a,b,c}会被认为是声明列表而非对象),不能导出单独变量(如:export a)
	export default:能导出单独变量
	import为动态导入,即导入的内容在原模块变化,导入的内容也会更新,导入的内容只能修改其属性
	import为静态编译
    import多次导入相同模块路径,会被合并在一起
	export和import都不能放在if分支里
	当export和export default都存在时导入写法:import default导出变量,{export导出变量} from 'x'

(1)导出导入类型
	任何声明(比如变量,函数,类,类型别名或接口)都能够通过添加export关键字来导出。
	
	方式一:直接用import导入,基于导入省略的功能,存在副作用被擦去的问题
		export interface {...};  
		export type a=c;	
		
		导入:import {x} from 'x.ts'
		
		导入省略:
			// ./foo.ts文件
			interface Options {
			  // ...
			}
			export function doThing(options: Options) {
			 
			}
			// ./bar.ts文件
			导入省略:当 TypeScript 输出一个 JavaScript 文件时,TypeScript 会识别出 Options 仅仅是当作了一个类型来使用,它将会删除 Options
			import { doThing, Options } from './foo.js';
			
			function doThingBetter(options: Options) {
			  doThing(options);
			  doThing(options);
			}
		
		导入省略的缺陷:
			import { MyThing } from './some-module.js'; 单从导入无法确定是否是类型,以及是否应该删除它
		
			若含有副作用的模块:
				import {someType} from '...'
				当导入的模块只用作了类型,则会被省略,导致如果该模块中有其他如执行方法等副作用不会被执行
			
			解决办法:再单独导入整个模块
				import { SomeTypeFoo, SomeOtherTypeBar } from './module-with-side-effects';
				import './module-with-side-effects';
	
	方法二:添加type关键字,解决导入省略的缺陷
		import type { Cat, Dog } from "./animal.js";  表明只是类型的导入
		import { createCatName, type Cat, type Dog } from "./animal.js"; 添加type前缀混用
		
		

(2)导出重命名
	export {变量名 as 新变量名}

(3)导入外部模块再重新导出 
	外部模块:必须是export导出
	export {变量名 as 若要取别名 } from '模块路径'
	
(4)支持CommonJS和AMD的exports, TypeScript提供了export =对象的语法,不能和其他export一起使用
	对象:是对象,变量,类,接口,命名空间,函数或枚举
	export=对象;
	import x=require('路径')	或 import x from '路径'  两种方式都兼容node环境
		当"esModuleInterop": true,配置开启时

(5)按需加载
	if(布尔){
		import('模块')
	}else{
		import('模块')
	}

(6)只加载模块,不导入内容
	import "./maths.js"; 导入后会执行该文件
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值