TypeScript 导出用法
TypeScript export usage
我写了一些 TypeScript 代码,我想把它作为一个包来使用,但是我无法准备我的导出和导入语法。有谁能帮助我达到我的方法吗?你可以在下面的图片上看到我的定义
如何将我的函数组合在一个命名空间或 class 中以达到我预期的导入语句。您可以分叉和编辑我的代码。
谢谢指教。
我的实际实现
import {
utilAFunction1,
utilAFunction2,
utilBFunction1,
utilBFunction2
} from './src/utils';
utilAFunction1();
utilAFunction2();
utilBFunction1();
utilBFunction2();
我的预期实现
import { utils } from './src/utils';
utils.utilAFunction1();
utils.utilAFunction2();
utils.utilBFunction1();
utils.utilBFunction2();
我的项目文件结构也是
src
utils
util-a
index.ts
util-b
index.ts
index.ts
index.ts
// util-a > index.ts
export function utilAFunction1(): void {
console.log('Util A function 1');
}
export function utilAFunction2(): void {
console.log('Util A function 2');
}
// util-b > index.ts
export function utilBFunction1(): void {
console.log('Util B function 1');
}
export function utilBFunction2(): void {
console.log('Util B function 2');
}
// utils > index.ts
import { utilAFunction1, utilAFunction2 } from './util-a';
import { utilBFunction1, utilBFunction2 } from './util-b';
export { utilAFunction1, utilAFunction2, utilBFunction1, utilBFunction2 };
// src > index.ts
import {
utilAFunction1,
utilAFunction2,
utilBFunction1,
utilBFunction2
} from './src/utils';
utilAFunction1();
utilAFunction2();
utilBFunction1();
utilBFunction2();
/*
// my expected import statement and usage
import { utils } from './src/utils';
utils.utilAFunction1();
utils.utilAFunction2();
utils.utilBFunction1();
utils.utilBFunction2();
*/
My expected implementation
import { utils } from './src/utils';
utils.utilAFunction1();
utils.utilAFunction2();
utils.utilBFunction1();
utils.utilBFunction2();
如果不必完全 import { utils } from...
,您可以在不对 utils
:
进行任何更改的情况下执行此操作
import * as utils from './src/utils';
为模块导入 模块命名空间对象,它对模块中的所有命名导出具有只读属性,并且(如果模块具有默认导出)一个default
属性 默认导出。
或者,如果您真的希望它具体如下:
import { utils } from './src/utils';
...然后您可以将其添加到 utils
:
export const utils = { utilAFunction1, utilAFunction2, utilBFunction1, utilBFunction2 };
但请注意,其上的属性不像在模块名称空间对象上那样是只读的,尽管您可以轻松地将它们设为只读:
export const utils = Object.freeze({ utilAFunction1, utilAFunction2, utilBFunction1, utilBFunction2 });
我写了一些 TypeScript 代码,我想把它作为一个包来使用,但是我无法准备我的导出和导入语法。有谁能帮助我达到我的方法吗?你可以在下面的图片上看到我的定义
如何将我的函数组合在一个命名空间或 class 中以达到我预期的导入语句。您可以分叉和编辑我的代码。 谢谢指教。
我的实际实现
import {
utilAFunction1,
utilAFunction2,
utilBFunction1,
utilBFunction2
} from './src/utils';
utilAFunction1();
utilAFunction2();
utilBFunction1();
utilBFunction2();
我的预期实现
import { utils } from './src/utils';
utils.utilAFunction1();
utils.utilAFunction2();
utils.utilBFunction1();
utils.utilBFunction2();
我的项目文件结构也是
src
utils
util-a
index.ts
util-b
index.ts
index.ts
index.ts
// util-a > index.ts
export function utilAFunction1(): void {
console.log('Util A function 1');
}
export function utilAFunction2(): void {
console.log('Util A function 2');
}
// util-b > index.ts
export function utilBFunction1(): void {
console.log('Util B function 1');
}
export function utilBFunction2(): void {
console.log('Util B function 2');
}
// utils > index.ts
import { utilAFunction1, utilAFunction2 } from './util-a';
import { utilBFunction1, utilBFunction2 } from './util-b';
export { utilAFunction1, utilAFunction2, utilBFunction1, utilBFunction2 };
// src > index.ts
import {
utilAFunction1,
utilAFunction2,
utilBFunction1,
utilBFunction2
} from './src/utils';
utilAFunction1();
utilAFunction2();
utilBFunction1();
utilBFunction2();
/*
// my expected import statement and usage
import { utils } from './src/utils';
utils.utilAFunction1();
utils.utilAFunction2();
utils.utilBFunction1();
utils.utilBFunction2();
*/
My expected implementation
import { utils } from './src/utils'; utils.utilAFunction1(); utils.utilAFunction2(); utils.utilBFunction1(); utils.utilBFunction2();
如果不必完全 import { utils } from...
,您可以在不对 utils
:
import * as utils from './src/utils';
为模块导入 模块命名空间对象,它对模块中的所有命名导出具有只读属性,并且(如果模块具有默认导出)一个default
属性 默认导出。
或者,如果您真的希望它具体如下:
import { utils } from './src/utils';
...然后您可以将其添加到 utils
:
export const utils = { utilAFunction1, utilAFunction2, utilBFunction1, utilBFunction2 };
但请注意,其上的属性不像在模块名称空间对象上那样是只读的,尽管您可以轻松地将它们设为只读:
export const utils = Object.freeze({ utilAFunction1, utilAFunction2, utilBFunction1, utilBFunction2 });