我刚开始使用Typescript/React,我试图理解这一切意味着什么。我有c#背景,所以这对我来说有点新。我已经看了一些教程,但我仍然对这个的语法有点困惑。
对于初学者来说,这一行到底是什么意思呢?
type OnUserClick = (u: UserTat) => any
这个接口…定义onClick
函数为() => OnUserClick
而不是OnUserClick
…为什么会这样?
interface IBProps {
user: UserTat
onClick: () => OnUserClick
}
type OnUserClick = (u: UserTat) => any
OnUserClick是一个接受一个参数的函数(在类型定义中命名为u
,但JS/TS没有命名参数,所以使用时可以调用任何名称);该参数的类型是UserTat,该函数返回any
,这意味着它可以是任何可能的返回类型。写下any
通常不是一个好主意,因为任何调用该函数的代码都必须强制转换返回值,或者自己检查返回的是什么。
interface IBProps {
user: UserTat
onClick: () => OnUserClick
}
这个接口意味着任何实现IBProps的东西都有两个属性:一个是UserTat类型的user,一个是onClick,它是一个不接受参数并返回OnUserClick类型的函数。一个例子(构成UserTat的定义)是:
{
user: { name: 'Zac Anger' ... }
onClick: () => (u) => ({ clicked: 'true' })
}
因为OnUserClick本身被定义为一个函数,返回一些东西,那么IBProps的那一部分可能是一个bug;它说IBProps.onClick
是一个函数,它返回一个函数,该函数接受UserTat并返回any。
type OnUserClick = (u: UserTat) => any
定义OnUserClick
是一个函数,它接受来自UserTat
类型的参数u
,并返回任何类型(any
)
interface IBProps {
user: UserTat
onClick: () => OnUserClick
}
定义一个接口,它包括:
- user from type
UserTat
- 上面声明的
OnUserClick
类型的onClick函数