[英]Typescript Anonymous class type - HOC
我正在嘗試創建一個通用的HOC,但是我遇到了類型的問題
讓我們開始簡單:
class Abc extends React.Component<{}> {
hello() {
}
render() {
return <View />
}
}
在JSX中引用,沒有問題
<Abc
ref={(r: Abc) => {
r.hello();
}}
/>
現在讓我們創建一個匿名,就像HOC會返回一樣
const Bcd = class extends React.Component<{}> {
hello() {
}
render() {
return <View />
}
};
做我們過去做過的事情
<Bcd
ref={(r: Bcd) => {
r.load()
}}
/>;
現在我們得到TS2304: Cannot find name Bcd
,對於以下(r: Bcd)
。
我試圖將其更改為(r: (typeof Bcd))
,但是它會抱怨typeof Bcd
類型與Bcd
不兼容
我做錯了什么或打字稿不支持那種打字?
在您的示例中, Abc
是JavaScript變量名稱和 TypeScript類型名稱,而Bcd
是JavaScript變量名稱但不是 TypeScript類型名稱。 Bcd
的類型是{hello(): void} & React.Component<{}>
的未命名交集類型 。 由於類型沒有名稱,因此無法將其作為TypeScript代碼中其他類型的類型引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.