typescript class中的函数重载
class Box{
size = (width?: number, height?: number) => {
// ...
}
}
size(width, height): void
size(): [number, number]
Box中的size方法我想实现有入参就设置 没参数就返回数值
这个size的类型该怎么去写 在哪写
并且不想用size(){}这样的方式 这样打包会挂在proto上
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
用 interface 先把函数类型定义好呗,然后类里面直接用这个类型定义 size 。
interface 可以定义函数,也可以定义重载函数。
我觉得你是想声明重载函数的类型,可以这样声明:
我的课程《TypeScript从入门到实践「2021版」》中有讲到使用接口来声明函数类型的方法:
不过,对于你这个问题,却可能做不到。在 TypeScript 中,箭头函数是不能声明重载的(因为是箭头函数直接写的实现,推断出来的函数类型;而重载函数必须要专门声明),所以虽然可以声明
Box
的size
是SizeAccessor
这种重载函数类型:但是,却不能直接用箭头函数给他赋值
解决办法是把箭头函数强制转换一下(不太优雅,但能解决问题)
其实这里转换成
any
也是可以的,反正size
已经声明为SizeAccessor
类型,后面使用都是按SizeAccessor
来提示:写一个
getSize
一个setSize
两个方法就好了呀非要的话,这样写?
试试这个?
无参数提示:
有参数提示: