相关疑难解决方法(0)

"所有合法的JavaScript是合法的TypeScript"是什么意思?

我经常听到人们发表这样的陈述

所有JavaScript代码都是合法的TypeScript代码

要么

TypeScript是JavaScript的超集

但是当我写出一些完全合法且合理的 JS代码时,它们具有完全确定性的行为:

var x = "hello".substr("w").toStrig * { m: 3 / true } + window + parseInt(Element).fzq;
Run Code Online (Sandbox Code Playgroud)

ECMAScript定义x应该具有"NaN[object Window]undefined"看起来完全正常的值,但是我从TypeScript得到了一堆错误!是不是这句话"所有JS都是TS"的谎言呢?这是怎么回事?

typescript

11
推荐指数
1
解决办法
794
查看次数

打字稿:为什么这段代码在100%有效的javascript代码时抛出异常

声称TypeScript是Javascript的超集.这是关于Stack 的问题.以下是规格引用:

TypeScript是JavaScript的语法糖.TypeScript语法是ECMAScript 2015(ES2015)语法的超集.每个JavaScript程序也是一个TypeScript程序.

所以我的理解是,任何独立的javascript文件都可以被视为有效的打字稿代码,即通过tsc编译器编译(可能带有一些额外的标志).

但这是js代码的一个例子:

class ClassA {}
ClassA.prototype.ping = () => {console.log('PING')}
Run Code Online (Sandbox Code Playgroud)

这是有效的JavaScript,但如果您尝试使用typescript编译它,您将得到: error TS2339: Property 'ping' does not exist on type 'ClassA'

可以声明ClassA可以实现的接口,同样,编写这样的代码(组合类和原型语法)是非常不典型的 - 但是 - 这看起来像一个有效的js代码的例子,它在用tsc编译时引发错误.

所以问题是 - 这与规范的引用不相矛盾?

javascript typescript

0
推荐指数
1
解决办法
84
查看次数

标签 统计

typescript ×2

javascript ×1