node.js - 在 React 中导入 src 之外的 TypeScript 类型
问题描述
我最近一直在做一个React + Express
项目,它的项目文件结构如下:
Repo
|--ExpressApp
|--src/..
|--Common
|--types.ts
|--ReactApp
|--src/..
所以 express 应用程序存在于ExpressApp
文件夹中,react 应用程序存在于ReactApp
文件夹中,并且内部Common
是一组Typescript
在 express 和 react 应用程序之间共享的类型。
react 应用程序是一个create-react-app
项目,我已经阅读了与导入驻留在 react 应用程序 src 目录之外的文件相关的问题。但是,在 React 应用程序中,我似乎能够Common/types.ts
毫无问题地将指定的类型导入到 React 应用程序中。
/** Common/types.ts */
// This imports ok to React app even though its outside of the src directory
export type Person {
id: string,
name: string,
role: string
};
// This does not import into React app, as it is outside of the source directory
export const smapleFunction = () => {
...
}
/** ReactpApp/src/app.ts */
// This is accepted by React
import { Person } from '../../common/types';
// This is not accepted by React
import { sampleFunction } from '../../common/types';
如果我要从 Common/types.ts 文件中导出一个函数并在 React 应用程序中使用它,那么 react 会抛出预期的错误,即文件必须驻留在 src 目录中 - 但是,在导入类型、接口等时没有发现问题.
有人可以解释一下为什么这似乎适用于 src 之外的打字稿类型,但不适用于函数或其他模块?我假设它与 CRA 项目中如何处理 Typescript 有关,但我不太了解这个过程?
解决方案
类型和接口没有被编译,所以它们本质上是作为构建过程的第一部分被删除的,并且构建可以继续进行。但是其余的构建过程依赖于src
文件夹中存在的所有代码,并且该目录中不存在通用功能代码(已编译)。
推荐阅读
- chatbot - RASA 聊天机器人 rasa.core.policies.ensemble.InvalidPolicyConfig:无法加载策略“MemoizationPolicy”的模块
- r - 基于多个变量的聚类观察
- c# - 如何绘制不完全适合周围矩形的右对齐字符串
- frama-c - 在 Frama-C 中从原始源代码执行死代码消除/切片
- xslt - XSLT - 如何在重复标签中获取第一个值 - 如此简单但并不那么简单
- rstudio - 我正在尝试通过省略预算列中使用美元以外的货币的任何原始数据来过滤 R 中的数据
- azure - 我可以在开发测试实验室环境中实例化多网卡虚拟机吗?
- java - 功能修改数据库时是否可以使用功能标志/切换?
- c# - 集线器方法中的异步登录
- r - Shiny App中的美国地图不会随选项而改变