用这两种方式为箭头函数定义类型有什么区别?

What is the difference between defining types for arrow function in these two ways?

我对以下两种类型的虚拟箭头函数之间的区别感到困惑。有人可以指出区别吗?

const hello = (i: string):string => { return "Hi, User!" }

const hello: string = (i: string) => { return "Hi, User!" }

第二个函数抛出错误!

[yours]
1. const hello = (i: string):string => { return "Hi, User!" } // correct

2. const hello: string = (i: string) => { return "Hi, User!" } // error

因为 hello 函数类型不是字符串。

你好函数类型是“(i: string) => string”。

[correct]
const hello: (i:string) => string = (i: string) => { return "Hi, User!" }