-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于ts的一个疑问? #4
Comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
关于ts的一个疑问?
一直以来没有在项目中实践过
typescript
,所以今年过年休假的时候,打算尝试一下。在使用
Function.prototype.bind
的时候,注意到了一个让我很诧异的点。VSCode中,对于bind
方法的定义如下:我们都知道,
bind
这个方法在Javascript中是用来解决函数this作用域的问题的,其返回值类型必然是函数。对于ts来说,我们使用他的一个核心目的就是通过强类型来提供更好的限制和语法补全,可为什么关于bind
的返回值定义却是any
。在之后的尝试中,我隐隐约约感受到了问题的所在,就是ts对于这种
高阶函数
写定义,好像都很难把返回函数的定义清晰表示出来。为此我请教了@yenshih,他给我看了一下redux/compose的d.ts的实现:https://github.com/reactjs/redux/blob/master/index.d.ts#L416 ,并说了一句“最终还是会落到any的”。
这段代码果然如他所说,在对有限的参数(1, 2, 3, 4)做了类型限制之后,最终落到了any:
在后面一些朋友学习交流后,@Chion82也表达了一些他的意见:“函数式和强类型有那么一丁点儿冲突,不是说不能强类型,但是这样静态分析很困难”。
这和我的感觉也是一致的,你总要在高阶函数灵活性和强类型约束之间做一些取舍(any大法好!),至于如何取舍,应该就是取决于开发人员结合项目及自身来决定的了。
The text was updated successfully, but these errors were encountered: