请教个 ts 的问题:函数 void 返回类型为什么不会报错?

React 组件中申明 props:

interface Props {
    onClick?: () => void;
}

const Text: FC<Props> = (props) => {
    return <div onClick={props.onClick}/>;
};

调用的时候:

<Test onClick={() => { return '123'; }}>

为什么不会报错呢?不是申明 void 类型了吗?

typescript
108 views
Comments
登录后评论
Sign In
·

ts 的 void 类型指的是“不关心返回值是什么”的意思,可以看看官方文档:return-type-void。这个关键字是为了一些场景下编码方便(更加简洁),比如官方的例子:

void is not the same as undefined.

const src = [1, 2, 3];
const dst = [0];

src.forEach((el) => dst.push(el));

如果申明不是 void 类型,你只能写成:

const src = [1, 2, 3];
const dst = [0];

src.forEach((el) => { return dst.push(el); });

是不是麻烦很多,如果要明确函数无返回类型,应该用 undefined

interface Props {
    onClick?: () => undefined;
}