typescript - 如何创建与特定文件映射一起使用的自定义 d 文件
问题描述
我已经为内部 javascript 库声明了一个模块,因此我可以在我的 typescript 项目中使用该库。假设这个库有 3 个 React 组件。
declare module 'internal-js-library' {
import { FC } from 'react';
type ComponentAProps = { ... };
type ComponentBProps = { ... };
type ComponentCProps = { ... };
export const ComponentA: FC<ComponentAProps>;
export const ComponentB: FC<ComponentCProps>;
export const ComponentC: FC<ComponentBProps>;
}
这按预期工作。现在,当我在打字稿文件上使用这个库时,我有了完整的类型
import { ComponentA, ComponentC } from 'internal-js-library' ;
但是当像这样直接导入时,ComponentA
,ComponentB
并且ComponentC
会在生成构建时被捆绑,即使我没有使用ComponentB
. 我想避免这种情况。
ComponentA
解决方案是直接导入ComponentC
。但是,ComponentA
并ComponentC
不再键入。Typescript 不再识别它们的类型。
import ComponentA from 'internal-js-library/lib/ComponentA/ComponentA';
import ComponentC from 'internal-js-library/lib/ComponentC/ComponentC';
解决方法是:
declare module 'internal-js-library/lib/ComponentA/ComponentA' {
import { FC } from 'react';
type ComponentAProps = { ... };
const ComponentA: FC<ComponentAProps>;
export default ComponentA;
}
declare module 'internal-js-library/lib/ComponentC/ComponentC' {
import { FC } from 'react';
type ComponentCProps = { ... };
const ComponentC: FC<ComponentCProps>;
export default ComponentC;
}
但是现在执行以下操作不再有效:
import { ComponentA, ComponentC } from 'internal-js-library'
我怎样才能优雅地编写我的定义文件,以便两者都internal-js-library/lib/ComponentX/ComponentX
可以internal-js-library
工作?
起初我想做这样的事情,但我想不通。似乎不对
declare module 'internal-js-library/lib/ComponentA/ComponentA' {
import { FC } from 'react';
type ComponentAProps = { ... };
const ComponentA: FC<ComponentAProps>;
export default ComponentA;
}
declare module 'internal-js-library/lib/ComponentB/ComponentB' {
import { FC } from 'react';
type ComponentBProps = { ... };
const ComponentB: FC<ComponentBProps>;
export default ComponentB;
}
declare module 'internal-js-library/lib/ComponentC/ComponentC' {
import { FC } from 'react';
type ComponentCProps = { ... };
const ComponentC: FC<ComponentCProps>;
export default ComponentC;
}
declare module 'internal-js-library' {
import ComponentA from 'internal-js-library/lib/ComponentA/ComponentA';
import ComponentB from 'internal-js-library/lib/ComponentA/ComponentA';
import ComponentC from 'internal-js-library/lib/ComponentA/ComponentA';
export ComponentA; // this gives an error
export ComponentA: typeof ComponentA; // I'd have to rename the ComponentA on the import
}
解决方案
推荐阅读
- python-3.x - Python 3 从列表中创建变量名并添加后缀
- google-apps-script - Datastudio :: 显示未填写 google 表单的人员(每日签到问题)
- multithreading - 在 Web 服务器中使用执行程序服务多线程的正确方法?
- algorithm - 反馈顶点集(FPT)的放松版本(采样算法)
- c# - 在图片框内移动图像
- pine-script - 参数的类型应该是: const integer;
- karate - 空手道测试卡在测试运行步骤
- javascript - Audio Discord Bot 播放/暂停
- outlook - 如何使用 Graph API 从 Outlook 上的共享收件箱文件夹中读取电子邮件?
- c++ - 在 C++ 中将 OpenGL 模板操作写入前台