2017-07-16 25 views
1

我有以下組成部分:什麼類型給出的onChange等流動註釋

import { identity } from 'lodash'; 

export const Input = ({ 
    onChange = identity 
    //etc. 
}: { 
    onChange: Event<HTMLInputElement>, 
}) => <Input onChange={onChange} /> 

但是當我運行流程我得到這個錯誤:

onChange = identity, 
     ^^^^^^^^^^^^^^^^^^^ default value. Expected polymorphic type instead of 
onChange = identity, 
     ^^^^^^^^ class type: Event 

我很困惑,在哪裏找到Event的定義。

如果我看Facebook的DOM類型:

我可以在這裏看到Event其中有EventTarget類型的target property

但看着EventTargetdefinition,我沒有看到任何價值的定義。

我看不出來定義合成事件,因此它有一個類型爲HtmlInputElement的目標。

回答

2

流內置了合成事件的定義。你想在這種情況下,一個是SyntheticInputEvent(https://github.com/facebook/flow/blob/v0.49.1/lib/react.js#L310

這樣的onChange的類型將是

{ 
    onChange: (SyntheticInputEvent) => mixed, 
} 

是發生在一個SyntheticInputEvent並返回一個混合的時間,這基本上只是意味着你的函數不關心函數返回什麼(如果有的話)。