同是静态类型检查,为什么 Python 圈对 Type Hints 的重视程度明显不及前端圈对 TypeScript 的重视程度?

2019-10-08 12:45:22 +08:00
 szzhiyang
6963 次点击
所在节点    程序员
68 条回复
bilibilifi
2019-10-08 15:34:27 +08:00
cython 就是强制类型检查
JerryCha
2019-10-08 15:37:45 +08:00
你 Web 前端除了 JS 还有其他选择?
后端需要强类型直接就换语言,大不了 007。
szzhiyang
2019-10-08 15:54:23 +08:00
@abcbuzhiming 明白了,非常感谢你的热心解答!
laike9m
2019-10-08 16:10:50 +08:00
@ChristopherWu 把 type checker 的报错弄成强制的就好了呀,必须没有错误才能提交代码。当然代码风格(什么时候要加 hints )也必须要规定就是了。
watsy0007
2019-10-08 16:14:08 +08:00
ts 的重视因为是一门新语言, 然后翻译成 js 执行.

python 自带 typing, 但是并不是强制的.
love
2019-10-08 16:32:22 +08:00
有人用过吗?这个现在表达能力完备吗?比起 TS 怎样?
ayase252
2019-10-08 16:40:10 +08:00
一些库因为还要兼容 2.x,3.6 以下,type hints 加不上去。没有 type hints 很蛋疼,在 VSC 下写没有智能提示。
TS 没有兼容性负担,库可以由社区驱动写 d.ts 或者直接升级到 TS。反正最后要编译成 JS,旧项目也不会出问题。
ChristopherWu
2019-10-08 16:47:58 +08:00
@laike9m #23 python 原生支持报错吗?之前看 Annotation 只是真的是 Annotation
janxin
2019-10-08 16:50:10 +08:00
没有吧,前端不是很多人还在用 JS 吗?

另外关于 Type Hint,其实也可以跟 d.ts 一样挂外部描述文件 pyi 上去,也可以吧 stub file 单独发布成库,比如 Django 的 django-stub。

具体方式参考:mypy.readthedocs.io/en/latest/stubs.html
qcts33
2019-10-08 17:04:23 +08:00
@ayase252 vscode 是支持 type hints 提示的吧,我记得在函数的参数声明中加上 hint 之后 vscode 就能对相应的变量进行提示了
Raymon111111
2019-10-08 17:06:11 +08:00
应该是 python 没啥大型项目吧?
XIVN1987
2019-10-08 17:06:34 +08:00
@janxin
我觉得还是把类型标注和代码写一起比较好,,不然其中一个更新了另一个没更新会导致不匹配,,更麻烦

只不过以前 Python 没有标准的类型标注语法,,各个 IDE 和框架各自为战,,现在既然已经有标准标注语法了,大家都用这个标注语法就没问题了,,
janxin
2019-10-08 17:07:19 +08:00
@love 比 TS 肯定比不上的,TS 可以算是完全的新语言了,只是兼容 JS 的部分语法。
表达力上还是比较欠缺的,3.8 版本也强化了部分能力
jjx
2019-10-08 17:09:05 +08:00
python 因为有 python 之禅 的约束

代码的可读性是每个 python 入门后要求的第一位

至于某些人总是用小工具, 不讲究 来描述 python , 那可能是没有 把 python 当成主要语言来对待的, 不能用来说明问题
janxin
2019-10-08 17:09:48 +08:00
@XIVN1987 自然都是支持的,不过 Type Hint 本身也在进步,逐渐加新的能力,另外有些库目前需要兼容 py2 程序或者低版本 3.5 及以下
wangyzj
2019-10-08 17:15:42 +08:00
咋说呢
虽然我前后端都搞
但我依然受不了前端码农那种拯救世界的心
同时我也很钦佩前端码农那种世界必须由我来拯救的执着
ayase252
2019-10-08 17:16:23 +08:00
@qcts33 对,但是一些库(或者说绝大部分)由于一些原因是没有的
qcts33
2019-10-08 17:19:59 +08:00
@ayase252 哦哦,这个意思
遇到这种我会在我自己的代码里加 hint,至少让自己能用上代码补全😁😁😁
laike9m
2019-10-08 17:21:32 +08:00
@ChristopherWu 原生不支持
leavic
2019-10-08 17:23:32 +08:00
这玩意又没啥性能提升,写起来还增加工作量。
你要说加个类型提示就能达到 C 的效率,我每行都写。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/606977

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX