TypeScript 警告:导出、重新导出为、未找到(可能导出)

Álv*_*aro 24 typescript reactjs

有了这个文件夹结构

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80components/\n|  \xe2\x94\x94\xe2\x94\x80Employee/\n|    \xe2\x94\x94\xe2\x94\x80employee.tsx\n|    \xe2\x94\x94\xe2\x94\x80index.ts\n|  \xe2\x94\x94\xe2\x94\x80app.tsx\n
Run Code Online (Sandbox Code Playgroud)\n

我正在导出类型和组件

\n

员工.tsx

\n
import React, { FC } from 'react'\n\nexport type EmployeeState = {\n  Name: string\n  EmployeeId: number\n}\n\ntype EmployeeProps = {\n  employees: EmployeeState[]\n}\n\nexport const Employee: FC<EmployeeProps> = ({ employees }) => {\n  return (\n    <ul>\n    {\n      employees.map((employee) => (\n        <li key={employee.EmployeeId}>\n          <h2>{employee.Name}</h2>\n        </li>\n      ))\n    }\n    </ul>\n  )\n} \n
Run Code Online (Sandbox Code Playgroud)\n

然后从index.ts文件Employee夹导出

\n

索引.ts

\n
export { EmployeeState, Employee } from './employee'\n
Run Code Online (Sandbox Code Playgroud)\n

当我尝试导入时app.tsx

\n

应用程序.tsx

\n
...\nimport { EmployeeState, Employee } from '@components/Employee'\n...\n
Run Code Online (Sandbox Code Playgroud)\n

我从 TypeScript 收到此警告:

\n
WARNING in ../src/components/Employee/index.ts 4:0-53\n`export 'EmployeeState' (reexported as 'EmployeeState') was not found in './employee' (possible exports: Employee)`\n
Run Code Online (Sandbox Code Playgroud)\n
\n

我能够通过进行以下更改来修复警告:

\n

员工/index.ts

\n

老的

\n
export { EmployeeState, Employee } from './employee'\n
Run Code Online (Sandbox Code Playgroud)\n

新的

\n
export * from './employee'\n
Run Code Online (Sandbox Code Playgroud)\n

但我仍然不明白为什么它不能反过来工作。

\n

CWS*_*tes 45

我也遇到了这个问题,经过一番挖掘后发现了这个 GitHub 问题,如果感兴趣的话可以详细了解:https://github.com/webpack/webpack/issues/7378#issuecomment-683894656

无论哪种方式,解决方案都是您type需要以不同的方式导出。将您的代码更新为以下内容应该可以解决您的问题。

export { Employee } from './employee'
export type { EmployeeState } from './employee'
Run Code Online (Sandbox Code Playgroud)

如果您想了解更多有关其背后的方式和原因的信息,这里有一篇好文章:https://javascript.plainenglish.io/leveraging-type-only-imports-and-exports-with-typescript-3-8- 5c1be8bd17fb

  • 也可以这样做:`export { Employee, type EmployeeState } from './employee'` (3认同)