Ich bin ein langj?hriger React-Benutzer, versuche aber derzeit, Typescript zu lernen.
Wenn Sie in React Requisiten über mehrere Ebenen übergeben müssen, warum bleiben dann die von der übergeordneten Komponente der obersten Ebene definierten Typen nicht in den Requisiten? Es scheint frustrierend zu sein, Typen für die übergeordnete Komponente und alle untergeordneten Komponenten, die Variablen übergeben, neu definieren zu müssen.
Zum Beispiel habe ich eine Statusvariable für die übergeordnete Komponente definiert, ihren Typ hinzugefügt und ihn dann an die untergeordnete Komponente übergeben. In den Requisiten der untergeordneten Komponente erhalte ich die Fehlermeldung: Binding element 'var name' implicitly has an 'any' type.
Also muss ich entweder den Typ auf der untergeordneten Komponente neu definieren oder den Typ exportieren und in die untergeordnete Komponente importieren.
Sieht nach einer Menge zus?tzlicher Arbeit aus. Habe ich etwas falsch gemacht?
狀態(tài)類型與屬性類型有什么關(guān)系?兩者之間沒有隱式關(guān)系,因此需要在兩個地方都定義。
如果組件是獨(dú)立的,可以在任何父組件中使用,因此它無法從任何特定父狀態(tài)中獲取信息。
將類型集中在它們自己的模塊中是相當(dāng)常見的...
// types.ts interface User { id: number; name: string; } export type { User };
// Child.tsx import type { User } from "./types"; interface ChildProps { user: User; // 定義屬性類型 } const Child = ({ user }: ChildProps) => { return <p>你好,{user.name}</p>; } export default Child;
// Parent.tsx import type { User } from "./types"; import Child from "./child"; const Parent = () => { // 在狀態(tài)中使用 User 類型 const [user, setUser] = useState<User>({ id: 1, name: "Joe" }); return <Child user={user} />; };
請注意,組件的屬性是其合約的一部分。父組件無法在不提供滿足定義類型的屬性值的情況下使用子組件。