V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fy
V2EX  ›  程序员

吐槽 TypeScript 和 JavaScript

  •  
  •   fy ·
    fy0 · 2015-06-07 23:57:43 +08:00 · 7437 次点击
    这是一个创建于 3448 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在学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 条回复    2015-06-08 15:02:27 +08:00
    notcome
        1
    notcome  
       2015-06-08 01:02:15 +08:00
    你还是看看 PureScript 压压惊吧
    ShiningRay
        2
    ShiningRay  
       2015-06-08 01:06:48 +08:00
    毕竟是Typed
    phoenixlzx
        3
    phoenixlzx  
       2015-06-08 01:17:52 +08:00
    说实话我觉得 es6 带来的 generator 真的一点都不好用...
    skyline75489
        4
    skyline75489  
       2015-06-08 08:23:00 +08:00
    Coffee 还好吧,就是个高级语法糖。
    coolicer
        5
    coolicer  
       2015-06-08 08:45:53 +08:00
    有没有可能自动分析生成 d.ts。
    gilgamesh
        6
    gilgamesh  
       2015-06-08 09:11:16 +08:00 via Android
    没有这些能有 JS 的今天吗
    civet
        7
    civet  
       2015-06-08 09:30:52 +08:00
    .d.ts就是个巨坑 https://github.com/borisyankov/DefinitelyTyped
    一但js库更新版本更新了API……
    oxyflour
        8
    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
        9
    fy  
    OP
       2015-06-08 10:54:02 +08:00
    @oxyflour = = 写成一个module好像并不能成功啊,昨天试了一次,刚才又试一次,然而都失败了。
    oxyflour
        10
    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
        11
    fy  
    OP
       2015-06-08 12:54:46 +08:00
    @oxyflour
    也就是说即使是同一个module,也要export才能跨文件用咯。。
    我用的编译模式是amd,看文档上好像讲,用这个似乎就不用reference了?我的理解对吗?
    oxyflour
        12
    oxyflour  
       2015-06-08 15:02:27 +08:00
    嗯,不同文件里必须带 export 才能用
    然后即使用的是 amd,该引进来的 reference 还是要加的(用 reference 还是 import 取决于你是想写成 internal module 还是 external module,而用 amd 还是 commonjs 取决于编译出来的东西你打算用在哪里啦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5908 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:13 · PVG 10:13 · LAX 18:13 · JFK 21:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.