V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lichun
V2EX  ›  Node.js

请教一个我的疑惑, TypeScript 和 CoffeeScript 这种语言是个什么定义?

  •  
  •   lichun · 2015-11-29 16:25:44 +08:00 · 6044 次点击
    这是一个创建于 3276 天前的主题,其中的信息可能已经有所发展或是发生改变。

    从没接触过,想要了解下
    好像都需要依赖node.js,用npm install XXX

    • 给我感觉就像在JavaScript脚本语言上实现的脚本语言?
    • 如果最终都是转义成JavaScript,那这样做有什么优势吗?
    第 1 条附言  ·  2015-11-29 17:03:16 +08:00

    CoffeeScript 官网示例代码

    # Assignment:
    number   = 42
    opposite = true
    
    # Conditions:
    number = -42 if opposite
    
    # Functions:
    square = (x) -> x * x
    
    # Arrays:
    list = [1, 2, 3, 4, 5]
    
    # Objects:
    math =
      root:   Math.sqrt
      square: square
      cube:   (x) -> x * square x
    
    # Splats:
    race = (winner, runners...) ->
      print winner, runners
    
    # Existence:
    alert "I knew it!" if elvis?
    
    # Array comprehensions:
    cubes = (math.cube num for num in list)
    

    TypeScript 官网示例代码

    class Student {
        fullname : string;
        constructor(public firstname, public middleinitial, public lastname) {
            this.fullname = firstname + " " + middleinitial + " " + lastname;
        }
    }
    
    interface Person {
        firstname: string;
        lastname: string;
    }
    
    function greeter(person : Person) {
        return "Hello, " + person.firstname + " " + person.lastname;
    }
    
    var user = new Student("Jane", "M.", "User");
    
    document.body.innerHTML = greeter(user);
    
    16 条回复    2016-01-14 14:06:15 +08:00
    shyling
        1
    shyling  
       2015-11-29 16:30:06 +08:00
    统一语法?
    emric
        2
    emric  
       2015-11-29 16:57:58 +08:00
    写的爽。
    taoche
        3
    taoche  
       2015-11-29 17:00:24 +08:00
    语法糖。。
    typeScript 有类型检查。
    coffee 更多的是写法上的 它们都在功能上实现了拓展,比如 coffee 加入了 Class 的概念 还有很多啦。
    breeswish
        4
    breeswish  
       2015-11-29 17:00:49 +08:00
    代码生成器 :-)
    ljcarsenal
        5
    ljcarsenal  
       2015-11-29 17:01:08 +08:00 via Android   ❤️ 1
    ts 给 js 加了类型,接口等一些数据结构,以及实现了模块化,类,继承等,使其方便大工程的开发(我没开发过大工程,没体会) coffee 给我的感觉就像 Python ruby.两者可以理解为是 js 的语法糖,提高开发效率
    Hyperion
        6
    Hyperion  
       2015-11-29 17:05:52 +08:00
    方言, 解决一些 JavaScript 极端蛋疼的地方, 比如_this 啦什么的.

    的确方便很多, 但也有很多奇怪的地方, 比如学 CoffeeScript 时候, 三元运算被炸成另一个写法, 刚上手很蛋疼.
    tennix
        7
    tennix  
       2015-11-29 17:26:16 +08:00
    seki
        8
    seki  
       2015-11-29 17:26:40 +08:00
    个人理解,和原生 js 比起来优势是可以避免一些脏活,避免一些坑,避免一堆堆的括号和大括号的嵌套
    jiyinyiyong
        9
    jiyinyiyong  
       2015-11-29 17:38:52 +08:00   ❤️ 1
    JavaScript 是一门到处都能运行的语言,
    浏览器可以, 服务器可以, 手机上也可以, 某些嵌入式的设备也可以,
    特别是浏览器, 每个人电脑上都装了, 如果东西是 JavaScript 写的, 用户访问就太方便了
    于是, 大家都想用 JavaScript 写

    但是 JavaScript 因为装了太多地方, 版本也各种不一致
    某些地方装了很低版本的 XP 或者 IE, 楼主应该知道
    一个坏处就是, JavaScript 不能随便升级, 升级了浏览器没升级, 跪了怎么办
    结果就是这么多年过去了, JavaScript 实际上跟十多年前差别并不大
    或者说虽然已经很大了, 但是作为这么多人用的语言, 功能和工具远远不够强大

    于是 CoffeeScript 那个时代的人想到了个办法, 编译到 JavaScript
    现在么, 大公司也觉得编译是个好办法, 就把现成的语言改改, 编译过去
    于是就有了 TypeScript, 简单说, 就是省事嘛
    往坏了说, 微软是真的想搞个好用的浏览器编程语言, 没办法, 只能编译 JavaScript
    Node.js 环境跟浏览器环境类似. 当然, 情况会好一点
    1stlulu
        10
    1stlulu  
       2015-11-29 18:02:23 +08:00
    TypeScript is a superset of JavaScript, strong typed.
    colatin
        11
    colatin  
       2015-11-29 18:09:30 +08:00
    vscode 下用 typescript 写 node 程序,就一个字,爽
    learnshare
        12
    learnshare  
       2015-11-29 18:11:19 +08:00
    TypeScript 倾向于在 JavaScript 的基础上重新实现 ECMAScript ;
    CoffeeScript 只是一个用于简化 JavaScript 书写的工具。
    ahiyang
        13
    ahiyang  
       2015-11-29 20:16:55 +08:00 via iPhone
    ts 静态强类型 coffee 语法糖
    g00001
        14
    g00001  
       2015-11-29 20:42:57 +08:00
    其实调用微软 JS 解释器就可以编译 typescript ,不过要动点手脚, aardio 里就可以这样搞:

    import typeScript.compiler;
    typeScript.filesystem.fileData["test.ts"] = /**
    TS 代码
    **/

    //虚拟文件系统
    typeScript.filesystem.writeFile = function(fileName,data,writeByteOrderMark){

    };

    typeScript.compiler.execute("test.ts")
    haozhang
        15
    haozhang  
       2015-12-03 11:46:04 +08:00
    coffeescript 是给 ruby 或者 python 程序员写 js 用的, typescript 是给 java 或者 c#或者 c++程序员写 js 用的。我这么觉得。
    meanderer
        16
    meanderer  
       2016-01-14 14:06:15 +08:00
    typescript 有一个设计目标是作为 javascript 的超集,也就是说你写纯 javascript 也是可以的,只是你可以选择性添加类型信息。类型信息在开发大些的项目以及多人协作时会有用处,而且也可以看做是 documentation 。这么设计的坏处在于某些 javascript 的坑就免不了了,因为要兼容嘛。

    coffeescript 则并不以兼容 javascript 为目标,所以语法更简洁,也避免了不少坑。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2942 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:32 · PVG 20:32 · LAX 04:32 · JFK 07:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.