吐槽 TypeScript 和 Javascript - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
fy

吐槽 TypeScript 和 Javascript

  •  
  •   fy
    fy0 Jun 7, 2015 8037 views
    This topic created in 3979 days ago, the information mentioned may be changed or developed.
    最近在学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 ……


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

    不谈了,我先报个警压压鲸
    12 replies    2015-06-08 15:02:27 +08:00
    notcome
        1
    notcome  
       Jun 8, 2015
    你还是看看 PureScript 压压惊吧
    ShiningRay
        2
    ShiningRay  
       Jun 8, 2015
    毕竟是Typed
    phoenixlzx
        3
    phoenixlzx  
       Jun 8, 2015
    说实话我觉得 es6 带来的 generator 真的一点都不好用...
    skyline75489
        4
    skyline75489  
       Jun 8, 2015
    Coffee 还好吧,就是个高级语法糖。
    coolicer
        5
    coolicer  
       Jun 8, 2015
    有没有可能自动分析生成 d.ts。
    gilgamesh
        6
    gilgamesh  
       Jun 8, 2015 via Android
    没有这些能有 JS 的今天吗
    civet
        7
    civet  
       Jun 8, 2015
    .d.ts就是个巨坑 https://github.com/borisyankov/DefinitelyTyped
    一但js库更新版本更新了API……
    oxyflour
        8
    oxyflour  
       Jun 8, 2015
    项目很大需要分多个 module 的话确实麻烦。如果全写到一个 module 底下,作为 internal module 的话就不需要先编译出 .d.ts 了

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

    然后话说,js 本来就是个怀胎10天就出生的早产儿(有点天赋但缺陷不少),被领养后爹妈又只管拔苗助长(ecma 协会只想着添加新特性不考虑修复之前的错误),顺带还有点黑历史(es4),年轻时候有不少精分症状(浏览器兼容性问题),还真的有够可怜呢 : (
    fy
        9
    fy  
    OP
       Jun 8, 2015
    @oxyflour = = 写成一个module好像并不能成功啊,昨天试了一次,刚才又试一次,然而都失败了。
    oxyflour
        10
    oxyflour  
       Jun 8, 2015
    @fy 看这边
    https://github.com/Microsoft/TypeScript/wiki/Modules#splitting-across-files
    默认会编译出多个文件。要编译成一个用 tsc --out sample.js Test.ts
    fy
        11
    fy  
    OP
       Jun 8, 2015
    @oxyflour
    也就是说即使是同一个module,也要export才能跨文件用咯。。
    我用的编译模式是amd,看文档上好像讲,用这个似乎就不用reference了?我的理解对吗?
    oxyflour
        12
    oxyflour  
       Jun 8, 2015
    嗯,不同文件里必须带 export 才能用
    然后即使用的是 amd,该引进来的 reference 还是要加的(用 reference 还是 import 取决于你是想写成 internal module 还是 external module,而用 amd 还是 commonjs 取决于编译出来的东西你打算用在哪里啦
    About     Help     Advertise     Blog     API     FAQ     Solana     2620 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 61ms UTC 11:37 PVG 19:37 LAX 04:37 JFK 07:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86