Я использую библиотеку под названием apprun . Определение типа класса Component (здесь его реализация ) выглядит следующим образом:
export type View<T> = (state: T) => string | VNode | VNode[] | void;
export class Component<T=any> {
constructor(state?: T, view?: View<T>, update?: Update<T>);
readonly state: T;
setState(state: T, options?: { render?: boolean, history?: boolean }): void;
mount(element?: Element, options?: { render?: boolean, history?, global_event?: boolean }): Component<T>;
start(element?: Element, options?: { render?: boolean, history?, global_event?: boolean }): Component<T>;
on(name: string, fn: (...args: any[]) => void, options?: any): void;
run(name: string, ...args: any[]): number;
rendered: (state: T) => void;
mounted: (props: any) => void;
unmount: () => void;
unload: () => void;
}
Когда я использую этот класс в своих собственных компонентах, у меня возникают проблемы с выводом типа:
interface State {
foo: string
}
export class AboutPage extends Component<State> {
// State is correctly inferred.
// Changing `foo` to be `1` will cause an error.
state = {
foo: 'bar'
}
// Parameter `state` implicitly has an 'any' type.
// Why is the parameter not inferred just like the `state` property?
view = (state) => <div>About</div>
}
У меня возникли проблемы с пониманием того, почему выводится тип свойства state
и почему с параметром state
?
не происходит то же самое.