打字稿混合功能

我想我的问题已经在某个地方解决了,但搜索一个小时后找不到。在我的react + mobx应用程序中,我想将动作定义与商店分开,以使其更易于监控和清洁。因此,我创建了一个装饰器以将动作混合到商店中。用javascript正常工作会使打字稿编译器抱怨该函数不存在。你能告诉我如何告诉打字稿我的行为吗?到目前为止,这是我的代码

// ./store-actions.js
import {action} from "mobx";

type Constructor<T = any> = new (...args: any[]) => T;

export function storeactions<T extends Constructor>(...actions: Function[]): (target: T) => T {
    return function(target: T): T  {
        actions.forEach(fn => {
            target.prototype[fn.name] = action.bound(target,fn.name,{
                writable: false,enumerable: false,value: fn
            });
        });
        return target;
    };
}

// ./ui-store.js
import {observable} from 'mobx';
import {storeactions} from "../actions-decorator";
import {navigate} from "./navigate";

@storeactions(
    navigate
)
export class UiStore {
  @observable page: string = '';
}

export default new UiStore();

// ./Home.tsx
import React,{useState} from 'react';
import {observer} from 'mobx-react';
import uiStore from '../../stores/ui/store';

type Props = {

}

@observer
export class Home extends React.Component<Props> {

  handlePageChange = (event: MouseEvent) => {
    uiStore.navigate(event.target.value); // <<<<<<<<<<<<<<<< Fails because navigate doesn't exist
  };

  render() {
    return (
      <div classname="home">
        Current Page: {uiStore.page}

        <input type="radio" name="page" value="Login" onClick={this.handlePageChange} />
      </div>
    );
  }
}

有什么主意吗?先谢了

wuzesc 回答:打字稿混合功能

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2978758.html

大家都在问