TypeScript是ES6的超集吗?

6rvt4ljy  于 2023-05-08  发布在  TypeScript
关注(0)|答案(4)|浏览(224)

换句话说,所有ES6语法都被TypeScript覆盖了吗?
我的问题与以下问题有何不同:

  • TypeScript真的是JavaScript的超集吗?“
    ES6不是(或者如果你将来读到这篇文章,还没有被考虑过)JavaScript的当前版本
  • 是 typescript != ES6?

这不一样我知道我不是问这个

xzlaal3s

xzlaal3s1#

基于网站上提供的当前语言规范:
TypeScript是JavaScript的语法糖。TypeScript语法是Ecmascript 5(ES5)语法的超集。
并且:
TypeScript语法包括Ecmascript 6(ES6)的几个建议功能,包括类和模块。

tjjdgumg

tjjdgumg2#

TypeScript 1.5(2015年2月)是最后一个没有声称是ES6超集的版本:
TypeScript语法是Ecmascript 5(ES5)语法的超集。
从TypeScript 1.6(2015年8月)开始:
TypeScript语法是ECMAScript 6(ES6)语法的超集。
在TypeScript 1.8(2016年1月)中,措辞发生了变化,但含义是相同的:
TypeScript语法是ECMAScript 2015(ES2015)语法的超集。
所以,是的:**根据规范,TypeScript是ES6的超集。

dldeef67

dldeef673#

Typescript类似于JS,具有一些扩展功能,如类型检查和OOp支持。https://lackydev.com/typescript-for-beginners-and-overview-of-typescript/

cld4siwp

cld4siwp4#

虽然所有语法上有效的ES6程序都是语法上有效的Typescript程序,但这些程序在两种语言中并不一定意味着相同的事情或具有相同的运行时行为。下面的代码:

const A = 1, B = 2;
function foo(x) { return x; }

console.log(foo<A, B>(3));

在Typescript中,此程序编译(有3个错误)并将数字3记录到控制台。然而,在ES6中,这个程序记录了两次值false,因为foo<A为false,B>(3)为false。
因此,虽然Typescript是ES6的一个 * 语法 * 超集,但说该语言是一个超集并不准确。也就是说,绝大多数现实世界的ES6代码不会有这种问题。

相关问题