V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
Cbdy
V2EX  ›  JavaScript

微软号称 ts 是 js 的超集,随便一个 js 代码却编译报错

  •  
  •   Cbdy · 2017-07-30 13:23:20 +08:00 · 7495 次点击
    这是一个创建于 2673 天前的主题,其中的信息可能已经有所发展或是发生改变。
    微软官方的说法见 www.typescriptlang.org

    然后用 es6 写个类:

    class A { constructor() { this.a = {} } }

    编译报错。。我调了一会编译参数,还是无解,翻了一下官方的 issue,一年前就有人反馈了。。有种上当的感觉

    看来这个所谓的“超集”是“ c++是 c 的超集”这种超集啊,毕竟两种语言

    另外我发现 js 的 private fields 提案和 ts 的不一样( js 用#)不知道 ts 团队会咋办

    上微软车的同学你们咋看?
    27 条回复    2017-07-31 22:44:55 +08:00
    williamx
        1
    williamx  
       2017-07-30 13:31:53 +08:00
    不要纠结宣传。
    按 ts 的方法写。
    imswing
        2
    imswing  
       2017-07-30 13:34:54 +08:00
    一步很大的棋
    KeepPro
        3
    KeepPro  
       2017-07-30 13:35:27 +08:00 via Android
    你用 ts 编译器编译 es6 代码,编译不过去,然后提交了一个编译器的 bug ?没睡醒?看你上面举的例子,应该是找不到 this.a 的定义。
    mason961125
        4
    mason961125  
       2017-07-30 13:40:02 +08:00
    缺铜币直接说。
    wwqgtxx
        5
    wwqgtxx  
       2017-07-30 13:40:07 +08:00 via iPhone
    ms 也没说 ts 是 js 的 es6 的超集呀
    hiluluke
        6
    hiluluke  
       2017-07-30 13:40:36 +08:00
    http://www.scala-js.org/ 又一个超集。。。
    hiluluke
        7
    hiluluke  
       2017-07-30 13:41:09 +08:00
    https://github.com/facebook/flow 再来一个。。。
    zhuangzhuang1988
        8
    zhuangzhuang1988  
       2017-07-30 13:58:04 +08:00
    一看就是钓鱼得。
    hjc4869
        9
    hjc4869  
       2017-07-30 15:01:13 +08:00 via Android
    超集指的是功能,而不是说能过 ts 编译器检查的文件集合是 js 的超集。
    sfqtsh
        10
    sfqtsh  
       2017-07-30 15:08:39 +08:00 via Android
    无语,你学过 C++吗~~~
    SuperMild
        11
    SuperMild  
       2017-07-30 15:14:09 +08:00
    @hiluluke 你发的两个没有自称是 JS 的超集。
    hiluluke
        12
    hiluluke  
       2017-07-30 15:17:10 +08:00
    @SuperMild 😆
    SuperMild
        13
    SuperMild  
       2017-07-30 15:19:32 +08:00
    @hjc4869 一个语言自称是另一个语言的超集,应该是语法上的超集才对,功能上的超集这个说法很奇怪,什么是功能?对 html 和 css 的控制?这方面 TS 能做到的,JS 都能做到,谈不上“超”,结果 TS 超过 JS 的也只有语法上的功能了。
    flowfire
        14
    flowfire  
       2017-07-30 15:21:56 +08:00
    会报错然而依然能编译成功………
    我这种只看了几天文档的人都知道你这个写法哪里出问题了……
    hst001
        15
    hst001  
       2017-07-30 15:26:32 +08:00
    TS 是强类型,js 是弱类型。虽然有些情况 TS 可以推断类型,但是也仅限于已定义的类型。所以语法上,TS 并不是 js 的超集。你的代码就是语法上的问题。
    anubiskong
        16
    anubiskong  
       2017-07-30 15:34:44 +08:00
    哈哈哈哈哈,看评论能笑半天
    Quaintjade
        17
    Quaintjade  
       2017-07-30 15:46:18 +08:00 via Android
    官方宣传就不要太当真了。大致意思就是加了个(伪)强类型,然而最后还是要翻译成 js 的。
    本质上来说都是图灵完备的语言嘛。。。
    hjc4869
        18
    hjc4869  
       2017-07-30 16:00:47 +08:00
    @SuperMild feature 指的是 compiler/language service/toolchain 提供的 feature,比如更准确的代码提示,静态检查,async/await 等等。而实际上这些 feature 其中就有专门帮你报错用的,比如静态类型检查。
    顺带一提这个 feature 是可以关掉(或者说无视)的
    Cbdy
        19
    Cbdy  
    OP
       2017-07-30 16:10:59 +08:00 via Android
    @wwqgtxx es6 是 js 的子集,根据集合包含的偏序关系 es6 是 ts 的子集
    ma63d
        20
    ma63d  
       2017-07-30 17:48:03 +08:00
    缺铜币直接说。
    用 es6 钓鱼还真能钓到我也是服。
    visonme
        21
    visonme  
       2017-07-30 17:54:34 +08:00
    概念这么个玩法会不会有点太勉强了
    anyele
        22
    anyele  
       2017-07-30 18:49:57 +08:00 via Android
    日常钓鱼
    jybox
        23
    jybox  
       2017-07-30 20:17:00 +08:00
    Cbdy
        24
    Cbdy  
    OP
       2017-07-30 21:37:38 +08:00 via Android
    @jybox tsc 报 error,不是 warning
    longaiwp
        25
    longaiwp  
       2017-07-31 01:53:51 +08:00
    什么时候 TS 是 JS 的超集了?
    Revenant
        26
    Revenant  
       2017-07-31 09:09:22 +08:00 via Android
    @Cbdy es6 是规范,js 是具体的实现,不同内核的浏览器支持的 js 不一定一致,所以两者不能说谁是谁的父子集。
    fengdra
        27
    fengdra  
       2017-07-31 22:44:55 +08:00 via Android
    TS 报错也能照样输出 JS 文件的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   927 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:30 · PVG 05:30 · LAX 13:30 · JFK 16:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.