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

IT技术 reactjs typescript
2021-05-13 02:01:59

使用此文件夹结构

├──components/
|  └─Employee/
|    └─employee.tsx
|    └─index.ts
|  └─app.tsx

我正在导出一个类型和一个组件

员工.tsx

import React, { FC } from 'react'

export type EmployeeState = {
  Name: string
  EmployeeId: number
}

type EmployeeProps = {
  employees: EmployeeState[]
}

export const Employee: FC<EmployeeProps> = ({ employees }) => {
  return (
    <ul>
    {
      employees.map((employee) => (
        <li key={employee.EmployeeId}>
          <h2>{employee.Name}</h2>
        </li>
      ))
    }
    </ul>
  )
} 

然后从出口index.ts上的Employee文件夹

索引.ts

export { EmployeeState, Employee } from './employee'

当我尝试从 app.tsx

应用程序.tsx

...
import { EmployeeState, Employee } from '@components/Employee'
...

我从 TypeScript 收到这个警告:

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

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

员工/index.ts

:

export { EmployeeState, Employee } from './employee'

export * from './employee'

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

1个回答

我也遇到了这个问题,经过更多的挖掘,发现了这个 GitHub 问题,如果有兴趣,它会详细介绍:https : //github.com/webpack/webpack/issues/7378#issuecomment-683894656

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

export { Employee } from './employee'
export type { EmployeeState } from './employee'

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