试试这个:
class Main extends React.Component<MainProps, MainState> { constructor(props) { super(props); this.state = { todos: [], editorState: EditorState.createEmpty() }; this.onChange = (editorState) => this.setState({ editorState }); } onChange: (state: MainState) => void;}我还没有测试过,但是我认为它应该可以工作。
编辑
是的,这里有一个我没有注意到的问题,应该是:
class Main extends React.Component<MainProps, MainState> { constructor(props) { super(props); this.state = { todos: [], editorState: EditorState.createEmpty() }; this.onChange = (editorState) => this.setState({ editorState: editorState } as MainState); } onChange: (state: MainState) => void;}该类型的断言(
as MainState需要)如果
todos(属性是不可选的,如果它是可选的
todos?:any[]),那么就没有必要断言。
至于似乎与
onChange定义重复的内容,将在typescript
docs的Mixins部分中简要说明,但在您的示例中,该类中的定义:
onChange: (state: MainState) => void;
让编译器知道的实例
Main具有此方法的实例,该方法
onChange接收a
MainState并返回
void。
但是,仅在ctor中创建实例时才分配此方法的实现:
this.onChange = (editorState) => this.setState({ editorState });如果缺少定义,则ctor中的赋值将产生编译错误:
property 'onChange' does not exist on type 'Main'。



