Tel*_*irw 2 javascript typescript reactjs
为什么在输入不应返回任何内容的函数然后访问返回某些值的props.onClick内部Message组件后不会出现错误?
type MessageProps = {
onClick: () => void,
value?: string
}
const Message: React.FunctionComponent<MessageProps> = (props: any) => {
return (
<>
<h1>Example message</h1>
<button onClick={props.onClick}>click</button>
</>
)
}
const App = (props: any) => {
return (
<div className="App">
<Message onClick={() => 2} />
</div>
);
}
export default App;
Run Code Online (Sandbox Code Playgroud)
从根本上来说,您要问的是为什么此分配不会导致错误:
\ntype VF = () => void;\n\nconst f: VF = () => 2;\nRun Code Online (Sandbox Code Playgroud)\n(游乐场)
\n这是因为具有void返回类型的函数类型并不要求分配的函数不返回任何内容。从文档中:
\n\n返回类型
\nvoid函数的返回
\nvoid类型可能会产生一些不寻常但预期的行为。返回类型为 的上下文类型
\nvoid不会强制函数不返回某些内容。另一种说法是,这是一个具有void返回类型(type vf = () => void)的上下文函数类型,在实现时可以返回任何其他值,但它将被忽略。
(他们的强调)
\n如果你仔细想想,这是有道理的,因为如果没有明确的return,或者没有return;值,所有 JavaScript 函数都会返回一些内容\xc2\xa0\xe2\x80\x94 ,那么返回值为undefined。
function a() { }\nfunction b() { return; }\nconsole.log("a", a());\nconsole.log("b", b());Run Code Online (Sandbox Code Playgroud)\r\n(我认为JavaScript 规范中的这里[for a] 和这里[for ] 已经涵盖了这一点,只是为了它的价值。)b
| 归档时间: |
|
| 查看次数: |
12246 次 |
| 最近记录: |