推荐关注
› Meteor
› JSLint - a JavaScript code quality tool
› jsFiddle
› D3.js
› WebStorm
推荐书目
› JavaScript 权威指南第 5 版
› Closure: The Definitive Guide
Cbdy

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

  •  
  •   Cbdy · Jul 30, 2017 · 8460 views
    This topic created in 3385 days ago, the information mentioned may be changed or developed.
    微软官方的说法见 www.typescriptlang.org

    然后用 es6 写个类:

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

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

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

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

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