reactjs - Hur man deklarerar olika state och props för underklasser i React med TypeScript


Superny på TypeScript och statisk typning i allmänhet med React, så

Givet att jag har denna överordnade komponent:

interface ParentProps {
 something: string
}

interface ParentState {
 somethingElse: string
}

export default class ParentComponent extends React.Component<ParentProps, ParentSate> {

  // Component Logic.

  sharedFunction() {
    // Some shared function.
  }
}

Hur kan jag deklarera olika props och state på en barnkomponent, till exempel:

interface ChildProps {
 something: string
}

interface ChildState {
 somethingElse: string
}

export default class ChildComponent extends ParentComponent<ChildProps, ChildState> {
  // Child component logic.
}

När jag försöker ovanstående får jag:

[ts] Type 'ParentComponent' is not generic.

Så, vad är det bästa sättet att uppnå denna separation?, tack.

Svar #1

Du kan göra ParentComponent generisk också så att ChildComponent kan ange olika props och state:

interface ParentProps {
    something: string
}

interface ParentState {
    somethingElse: string
}

export class ParentComponent<TProps extends ParentProps = ParentProps, TState extends ParentState = ParentState>
extends React.Component<TProps, TState> {

    // Component Logic.

    sharedFunction() {
        // Some shared function.
    }
}

interface ChildProps {
    something: string
}

interface ChildState {
    somethingElse: string
}

export class ChildComponent extends ParentComponent<ChildProps, ChildState> {
    // Child component logic.
}