支持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"; 导入后会执行该文件
支持js的所有导出方式 export:导出声明或表达式(export {a,b,c}会被认为是声明列表而非对象),不能导出单独变量(如:export a) export default:能导出单独变量(1)导出接口 任何声明(比如变量,函数,类,类型别名或接口)都能够通过添加export关键字来导出。 export interface {...}; export type a=c; 引入时和导出普通类型相同:import {x} from 'x.ts'(2)导出重命名 exp
该软件包包含CLI和API,以格式化JavaScript和TypeScript代码的导入和导出。
它最初是为VSCode插件,然后提取到独立的CLI和lib中以用于更多用例(例如CI / CD)和编辑器(希望如此)。
[1.0]发行说明
发布API: formatSource , resolveConfigForFile , isFileExcludedByConfig等。
释放CLI format-imports 。
按自定义规则对导入进行分组和排序,包括按路径或名称排序。
删除重复的和未使用的名称以及可配置的例外。
忽略配置或内联注释中的文件或声明。
遵守和规则。
尊重和配置。
保留'use strict' , ///指令,shebang( #! )和注释。
跨平台一致性:Windows,MacOS和Linux(Ubuntu)。
1.从ECMAScript2015开始,JavaScript引入了模块的概念。TypeScript也沿用了这个概念。
2.模块在自身的作用域里执行,而不是在全局作用域里;这意味着在一个模块里的变量,函数,类等等再模块外部是不可见的,除非你明确的使用export形式之一导出他们。
相反,如果你想使用其他模块导出的变量,函数,类,接口等的时候,你必须导入他们,可以使用import方式之
文章目录TypeScript 中的 exportexportimport
TypeScript 中的 export
注意: 目前没有任何浏览器实现 export 和 import ,要在浏览器中执行, 必须借助 TypeScript 或者其它的转换器!
export
export 语句用于从文件(或模块)中导出函数, 对象或者基础类型, 语法如下:
export { name1, name2, …, nameN };
export { variable1 as name1, variable2 as nam
目录背景`import type` vs `import`使用 `import type` 的好处参考链接
这周遇到了一个比较奇怪的问题:如何在 TypeScript 中根据某个 enum 的取值来执行后续逻辑?
按理来说应该很简单,这是 enum 的定义:
export enum MyEnum {
DEFAULT = 0,
SOME_VALUE = 1,
SOME_OTHER_VALUE = 2,
然后在另一个项目中,通过 import type 来引入:
import type
我们在使用egret的时候,调用egret中的类都是要加上egret.XXX或者egret.gui.XXX的。 这是为何呢?仔细看一下egret的源码会发现, egret中的定义的所有类都是这样的格式:module egret {
export class XXX {
}假如是gui模块,那么源码中的类module后面的就是egret.gui。 RES模块中的类module是RE