为什么你们要选择 TypeScript?

2021-05-06 14:45:03 +08:00
 BoringTu
我只是不明白为啥这么多人会选择 ts ?理由是啥啊? ts 出来的那年我就关注了,但所有的理由在我看来都是莫名其妙的观点,但这些年怎么还用的人越来越多了?
咱就说脑回路很神奇的把本身弱类型为优势的 JavaScript,套了一层强类型的壳的这步操作我就看不懂了,这是图啥呢?这样代码写着不难受么?那你直接用 Java 写然后编译成 JavaScript 不好么?
网上有很多人说,用 ts 可以减少因类型导致的错误。大哥,你是个程序员,你连自己写的代码是怎么跑的都不知道的话,转行好吗?我十一年的程序员了,js 写了 11 年,js 的其他高级语言我也都研究过,包括 ts,但现在只用 es6 和 coffee2,我怎么就一次都没碰到过我连变量背后的值类型导致的 bug 呢?
24470 次点击
所在节点    JavaScript
303 条回复
BoringTu
2021-05-06 15:52:56 +08:00
@haw86104 来,咱来聊聊因为格式化代码导致被打的话题吧,你平时都是用什么来护身的?
BoringTu
2021-05-06 15:55:14 +08:00
@huijiewei ??说 tm 啥呢在这?
BoringTu
2021-05-06 15:56:50 +08:00
@kingwl 对于你来说,弱类型不是优势,因为你不会用,这个道理不懂?
不会用当然就不是优势啊,这句话放在其他地方也是一样的啊。。
nnnToTnnn
2021-05-06 15:56:55 +08:00
@BoringTu TypeScript 最大的优点就是 type. 在加上 vscode 对 ts 的大力支持, 以及 ts-node 的支持.

例如你开发一个程序, 使用 TypeScript 几乎可以减少你百分之 50 左右的工作量.


1. 定义好类型.
2. vscode 可以根据类型来辅助你进行开发
3. 在编译之前, 就可以检测出来你的代码逻辑问题.
4. 上手简单

至于 coffeescript 和 typescript 相比, 大部分人应该都是喜欢 typescript 的, 只要你会 js 那么上手 ts 就很容易, 但是 coffeescript 几乎就是另外一门语言了. 我经常 ts 和 js 切换, 没感觉语法上有多大差异, 只是觉得写 js 没有 ts 的语法提示效率高.

学 coffeescript 几乎重新在学一门语言, 而且我不是很喜欢 coffeescript 的语法.
timedivision
2021-05-06 15:57:59 +08:00
举个简单的例子,一个接口返回十几二十个字段,你在编码阶段把这个接口的返回值用 interface 定义好,等你过个十天半个月回来改这里的代码的时候,你通过 interface 可以立马就知道接口的返回值有哪些字段、都是啥意思,而不用去翻之前的接口文档
Imindzzz
2021-05-06 15:59:14 +08:00
虽然你有故意的引战嫌疑,但还是真诚的和你交流一下吧。

人生苦短,多用代码提示

先不说团不团队的,调用一个第三方库,别去记具体的拼写。
敲一个 useH 在下拉框中选择 useHistory,编辑器自动 import 进来,就挺香的。

```js
import { useHistory } from 'react-router';
const history = useHistory();

```
zzlatan
2021-05-06 15:59:16 +08:00
我觉得是前端瞎折腾
jeffwcx
2021-05-06 16:00:49 +08:00
举一个例子,之前我用 js 写前端,使用第三方组件库的时候,动不动就要看下文档;之后我自己用 ts 写了组件库,大部分组件都能自动引入,组件的属性都能智能给出提示。这样看组件文档时间就减少了很多了,开发效率也大大增加,后人维护起来也很方便。
kingwl
2021-05-06 16:01:15 +08:00
> People percieve TypeScript as "just the compiler", but it's a better mental model to think of TypeScript as two separate entities: The compiler (aka syntax) and language tools (aka editor integration) - by treating these two systems as separate you have two important perspectives to understand decisions get made.

https://orta.io/notes/js/why-typescript
BoringTu
2021-05-06 16:03:08 +08:00
@revlis7 你说的理由我接受~
nnnToTnnn
2021-05-06 16:03:28 +08:00
@nnnToTnnn 我说说我实际的场景.

我自己写了一个封装一个组件. 我很清楚组件的功能

如果用 JS 封装的. 那么我使用几乎是这样的.


1. 切换到代码 /文档,
2. 在切换到代码
3. 查看属性,方法名称
4. 复制粘贴,上去然后进行逻辑编写.

如果用 ts 写, 那么我的操作变成这样了

1. alt + / 或则打一个.
2. 选择属性查看说明,然后按 enter


用起来很舒服. 其次第二个方面. 很多时候 ts 能在编译之前就能帮你纠正很多错误,而不是在运行的时候
learningman
2021-05-06 16:03:42 +08:00
@BoringTu #59 对啊,看个 get started 然后边用边看啊。。。有类型推导用起来多舒服
wangxiaoaer
2021-05-06 16:05:20 +08:00
"你肯定是用 windows 的吧,你不觉得 windows 用起来浑身难受么。。"


我每次用 mac 都想死,用 win 的时候感觉要起飞。
jeffwcx
2021-05-06 16:06:23 +08:00
@kop1989 github 开源没什么问题吧,真做得好的肯定青睐啊,只是不要太执着于 star 数
BoringTu
2021-05-06 16:06:40 +08:00
@coolcoffee 不不不,是 js 入门门槛低,导致大部分人连基础都没有的。。这个我深有体会。。
差不多到现在也面了几百个人了,而且尤其前一阵我面了一个工作十年的,数据结构和算法没一个了解的,冒泡排序逻辑都说不出来,对象赋值给变量问他这个变量存的是啥他也不知道。。都服了
ayase252
2021-05-06 16:08:03 +08:00
@BoringTu
> 什么情况下会出现你不知道这个变量里面有什么的情况?
在遗留代码(没有单元测试的项目,大部分项目处于这个阶段)里,动大多数代码的时候都会出现这样的情况。因为你只能掌握系统的部分知识。

> 如果我不用,再完善跟我也没关系啊。。话反过来说,coffee 一样很完善啊,而且还有其他选择,为啥要选 ts ?
主题是「为什么你们要选择 TypeScript ?」。说实话国内有很多工具链还没完善的东西就拿出来上生产环境了,像小程序。

> 如果你只写前端,人家后端凭什么要因为你用了 ts 报错了就要改自己接口代码?
这里的 API 设计不是指前后端交互的 API,而是指前端内部自身的函数 /模块设计。在 JS 中,一个函数超过一个职责、中间再来一点副作用的现象不少见。但是换成 TS,可能函数的类型声明都没法写,这就倒逼了前端本身的架构设计。
BoringTu
2021-05-06 16:08:11 +08:00
@yyfearth 其实对我来说痛点就是。。coffee 无论我觉得有多好用,但结果就是越来越没有市场了。反而我不看好的 ts 用的人越来越多。。其实我发这帖子也只是发泄一下,然后还是得入 ts 的坑。。就很难受。。
hello2060
2021-05-06 16:10:00 +08:00
写了 15+年的代码,越来越感谢自己是个让干啥干啥没别的想法的人,不像各位这语言不行那语言恶心的。无知有时也是优势啊😄
nnnToTnnn
2021-05-06 16:10:01 +08:00
用 js 或者用 ts , 其实用不用,最后你都要补全类型, 参照 facebook 的 react 项目. ts 只是帮你减少的时间, 减轻了你的编程压力.

至于 coffeescript , 如果也能想 ts 一样 被各个编辑器大力支持, 其实也会很流行. 不过 coffeescript 明显走偏了.

引用 nginx 的一段话


I’ve been wanting to add more scripting capabilities to NGINX for a long time. Scripting lets people do more in NGINX without having to write C modules, for example. Lua is a good tool in this area, but it’s not as widely known as some other languages.

JavaScript was the most obvious language to add next. It’s the most popular language – #1 on GitHub for the past three years. JavaScript is also a good fit for the way we configure NGINX.
BoringTu
2021-05-06 16:11:19 +08:00
@DOLLOR 你说的这个,其实稍微注意一下就没有问题了哇,我从 coffee1 用到现在 coffee2 也是有年头了,习惯这东西了之后就没出现过这种问题~

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

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

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

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

© 2021 V2EX