是否使用默认的AND命名导出来构建Typescript库?

1yjd4xko  于 2022-11-18  发布在  TypeScript
关注(0)|答案(2)|浏览(119)

我喜欢React作为默认对象导入的方式,比如import React from 'react',也喜欢以一种非结构化的方式导入,比如import { useEffect } from 'react',如果你觉得不好意思的话,甚至可以是import * as Whatever from 'react'。(除了通常的require语法,到目前为止,我已经花了大约15个小时在上面,但仍然无法让它工作(令人沮丧)。
现在我正在使用rollup来构建lib/cjs和lib/esm,以支持CommonJS和Modules。我还让typescript-compiler(tsc)构建类型文件,并将它们放在/lib/types中。
但我真正纠结的是如何像React那样导出我的文件。到目前为止,我在我的库的根目录下使用了一个index.ts“桶文件”,类似于:
一米四一米五一米......
但是这显然没有为我的库提供默认的导出。我需要做一些index.d.ts模块声明吗?任何关于构建typescript库的提示/教程都是有帮助的。我已经能够为我的库同时获得默认导入和命名导入,但是不能同时使用这两种导入。

p1iqtdky

p1iqtdky1#

您可以先导入所有内容,然后使用export default导出所有内容。

import * as filename1 from './filename1';
import * as filename2 from './filename2';

export default {
  ...filename1,
  ...filename2
};

这对你有用吗?

svmlkihl

svmlkihl2#

这应该是一个注解,但引用的是this answer。你可以在一个文件中合并导出和单个默认导出。你必须做一些工作来构建你想要的默认对象,但下面应该可以:

import * as filename1 from './filename1';
import * as filename2 from './filename2';

// build defaultObject as desired
const defaultObject = Object.assign({}, filename1, filename2)

export default defaultObject;
export * from './filename1';
export * from './filename2';

相关问题