吐槽 TypeScript 和 JavaScript

2015-06-07 23:57:43 +08:00
 fy
最近在学TypeScript,话说这语言其实还不错,微软技术果然过关啊!Delphi还是我第一门语言来着……

但是凡事都有但是,ts有一个非常蛋疼的依赖问题,很像是c++的库编译顺序问题:

1. 我们有 a.ts 编译生成 a.js 和 a.d.ts,后者实际上是个头文件

2. 我们想在 b.ts 里面调用 a.ts ,那么必须要有引用 a.d.ts,编译器才不会报错

这时候机智的小伙伴们肯定明白了麻烦之处。我目前还没太好办法解决问题,暂时是用python自己写轮子进行自动编译。。。这一点也不原生的方案必然是绕了弯路了口牙!

==============

然后楼主回忆了一下接触过的与js相关的玩坏js的技术,不禁为JS流下了同情的泪水。

就说最出名的几个吧,

前有jquery,中有coffeescript,后有asm.js和TypeScript,

还有 nodejs/iojs 和 Emscripten 项目也在玩坏js的道路上努力着

同时标准委员会还在不停思考 es6 es7 es8 ……


这些项目的参与者包括各种个人、社区、公司、企业、组织……

不谈了,我先报个警压压鲸
7344 次点击
所在节点    程序员
12 条回复
notcome
2015-06-08 01:02:15 +08:00
你还是看看 PureScript 压压惊吧
ShiningRay
2015-06-08 01:06:48 +08:00
毕竟是Typed
phoenixlzx
2015-06-08 01:17:52 +08:00
说实话我觉得 es6 带来的 generator 真的一点都不好用...
skyline75489
2015-06-08 08:23:00 +08:00
Coffee 还好吧,就是个高级语法糖。
coolicer
2015-06-08 08:45:53 +08:00
有没有可能自动分析生成 d.ts。
gilgamesh
2015-06-08 09:11:16 +08:00
没有这些能有 JS 的今天吗
civet
2015-06-08 09:30:52 +08:00
.d.ts就是个巨坑 https://github.com/borisyankov/DefinitelyTyped
一但js库更新版本更新了API……
oxyflour
2015-06-08 10:35:44 +08:00
项目很大需要分多个 module 的话确实麻烦。如果全写到一个 module 底下,作为 internal module 的话就不需要先编译出 .d.ts 了

我觉得主要还是 typescript 不能混用 internal module 和 external module 这点很蛋疼...一开始还很天真地认为用了 typescript 就不需要 browserify 了呢orz(不过 typescript 看起来仍然是在这一票编译到 js 的语言里面最有前途的XD

然后话说,js 本来就是个怀胎10天就出生的早产儿(有点天赋但缺陷不少),被领养后爹妈又只管拔苗助长(ecma 协会只想着添加新特性不考虑修复之前的错误),顺带还有点黑历史(es4),年轻时候有不少精分症状(浏览器兼容性问题),还真的有够可怜呢 : (
fy
2015-06-08 10:54:02 +08:00
@oxyflour = = 写成一个module好像并不能成功啊,昨天试了一次,刚才又试一次,然而都失败了。
oxyflour
2015-06-08 11:52:01 +08:00
@fy 看这边
https://github.com/Microsoft/TypeScript/wiki/Modules#splitting-across-files
默认会编译出多个文件。要编译成一个用 tsc --out sample.js Test.ts
fy
2015-06-08 12:54:46 +08:00
@oxyflour
也就是说即使是同一个module,也要export才能跨文件用咯。。
我用的编译模式是amd,看文档上好像讲,用这个似乎就不用reference了?我的理解对吗?
oxyflour
2015-06-08 15:02:27 +08:00
嗯,不同文件里必须带 export 才能用
然后即使用的是 amd,该引进来的 reference 还是要加的(用 reference 还是 import 取决于你是想写成 internal module 还是 external module,而用 amd 还是 commonjs 取决于编译出来的东西你打算用在哪里啦

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

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

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

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

© 2021 V2EX