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

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

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