【发布时间】:2020-03-20 12:14:25
【问题描述】:
我目前正在使用 TypeScript 开发一个 React 项目,我遇到了一个非常愚蠢的问题,而且非常烦人......
例如,我创建了一个名为 Page 的虚拟组件,它需要 page 类型的 Page 作为道具:
interface Props {
page: Page
}
export interface Page {
id: number
category: PageCategory
path: string
name: string
}
const Page: React.FunctionComponent<Props> = (props) => {
...
return (
...
<h1>{ props.page.name }<h1/>
...
export default Page
到目前为止没问题,但是一旦我决定导入具有以下类型的组件,它们就会出现:
import Page, { Page } from './component/Page' // ts-error: 'Duplicate identifier 'Page''
所以为了避免这个问题,我将前缀I 添加到我的所有接口,如IPage,但我确信有一种更优雅的方法可以做到这一点。你是怎么处理的?
【问题讨论】:
-
您可以在导入时将默认导出命名为您喜欢的任何名称...但真正的解决方案是为不同的事物赋予不同的名称。
-
已经有issues没有导入:导出的
Page得到any类型 -
@AlekseyL。
But real solution is to give different names for different things是的,但是Page类型的另一个名称是什么?因为对象就像一个Page -
@ford04 我真的不明白这个例子有什么问题?
-
@johannchopin 不清楚您要导出什么,接口
Page和const Page冲突在一起。正如 Aleksey 所说,给他们起不同的名字。
标签: reactjs typescript