-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Supported features
Bradford C. Smith edited this page Jan 24, 2023
·
10 revisions
Last update: 2020-01-09
See also https://github.com/google/closure-compiler/issues/2899
Feature | Language Version | Support |
---|---|---|
ES3 keywords as identifiers | ES5 |
yes |
getters & setters | ES5 |
Yes, but cannot be transpiled down to ES3 . Negatively impact optimizations. |
reserved words as properties | ES5 |
yes |
string continuation | ES5 |
yes |
trailing comma | ES5 |
yes |
array destructuring | ES6 |
yes |
Array.from |
ES6 |
polyfill |
Array.of |
ES6 |
polyfill |
array pattern rest | ES6 |
yes |
Array.prototype.copyWithin |
ES6 |
polyfill |
Array.prototype.entries |
ES6 |
polyfill |
Array.prototype.fill |
ES6 |
polyfill |
Array.prototype.find |
ES6 |
polyfill |
Array.prototype.findIndex |
ES6 |
polyfill |
Array.prototype.keys |
ES6 |
polyfill |
arrow function | ES6 |
yes |
binary literal | ES6 |
yes |
block-scoped function declaration | ES6 |
yes |
class | ES6 |
yes |
class extends | ES6 |
yes |
class getters / setters | ES6 |
Yes, but cannot be transpiled down to ES3 . Negatively impact optimizations. |
computed properties | ES6 |
yes |
const declaration | ES6 |
yes |
default parameter | ES6 |
yes |
ES modules | ES6 |
yes in input, but output is one large script, possibly broken into chunks |
extended object literal | ES6 |
yes |
for-of loop | ES6 |
yes |
generators | ES6 |
yes |
let declaration | ES6 |
yes |
Map |
ES6 |
polyfill |
Math.acosh |
ES6 |
polyfill |
Math.asinh |
ES6 |
polyfill |
Math.atanh |
ES6 |
polyfill |
math.cbrt |
ES6 |
polyfill |
Math.clz32 |
ES6 |
polyfill |
Math.cosh |
ES6 |
polyfill |
Math.expm1 |
ES6 |
polyfill |
Math.fround |
ES6 |
polyfill |
Math.hypot |
ES6 |
polyfill |
Math.imul |
ES6 |
polyfill |
Math.log10 |
ES6 |
polyfill |
Math.log1p |
ES6 |
polyfill |
Math.log2 |
ES6 |
polyfill |
Math.sign |
ES6 |
polyfill |
Math.sinh |
ES6 |
polyfill |
Math.tanh |
ES6 |
polyfill |
Math.trunc |
ES6 |
polyfill |
member declaration | ES6 |
yes |
new.target |
ES6 |
yes |
Number.EPSILON |
ES6 |
polyfill |
Number.isFinite |
ES6 |
polyfill |
Number.isInteger |
ES6 |
polyfill |
Number.isNaN |
ES6 |
polyfill |
Number.isSafeInteger |
ES6 |
polyfill |
Number.MAX_SAFE_INTEGER |
ES6 |
polyfill |
Number.MIN_SAFE_INTEGER |
ES6 |
polyfill |
Number.parseFloat |
ES6 |
polyfill |
Number.parseInt |
ES6 |
polyfill |
Object.assign |
ES6 |
polyfill |
object destructuring | ES6 |
yes |
Object.is |
ES6 |
polyfill |
Object.setPrototypeOf |
ES6 |
polyfill |
octal literal | ES6 |
yes |
Promise |
ES6 |
polyfill |
Reflect.apply |
ES6 |
polyfill |
Reflect.construct |
ES6 |
polyfill |
Reflect.defineProperty |
ES6 |
polyfill |
Reflect.deleteProperty |
ES6 |
polyfill |
Reflect.get |
ES6 |
polyfill |
Reflect.getOwnPropertyDescriptor |
ES6 |
polyfill |
Reflect.getPrototypeOf |
ES6 |
polyfill |
Reflect.has |
ES6 |
polyfill |
Reflect.isExtensible |
ES6 |
polyfill |
Reflect.ownKeys |
ES6 |
polyfill |
Reflect.preventExtensions |
ES6 |
polyfill |
Reflect.set |
ES6 |
polyfill |
Reflect.setPrototypeOf |
ES6 |
polyfill |
RegExp flag 'u' |
ES6 |
recognized in input, but cannot be transpiled |
RegExp flag 'y' |
ES6 |
recognized in input, but cannot be transpiled |
rest parameter | ES6 |
yes |
Set |
ES6 |
polyfill |
String.fromCodePoint |
ES6 |
polyfill |
String.prototype.codePointAt |
ES6 |
polyfill |
String.prototype.endsWith |
ES6 |
polyfill |
String.prototype.includes |
ES6 |
polyfill |
String.prototype.repeat |
ES6 |
polyfill |
String.prototype.startsWith |
ES6 |
polyfill |
string template literals | ES6 |
yes |
WeakMap |
ES6 |
polyfill |
WeakSet |
ES6 |
polyfill |
exponent operators | ES_2016 |
yes |
Array.prototype.includes |
ES_2016 |
polyfill |
Array.prototype.values |
ES_2017 |
polyfill |
async functions | ES_2017 |
yes |
Object.entries |
ES_2017 |
polyfill |
Object.getOwnPropertyDescriptors |
ES_2017 |
polyfill |
Object.values |
ES_2017 |
polyfill |
String.prototype.padEnd |
ES_2017 |
polyfill |
String.prototype.padStart |
ES_2017 |
polyfill |
Array.prototype.flat |
ES_2018 |
polyfill |
Array.prototype.flatmap |
ES_2018 |
polyfill |
async generator functions | ES_2018 |
yes |
for-await-of loop | ES_2018 |
yes |
object pattern rest | ES_2018 |
yes |
Promise.prototype.finally |
ES_2018 |
polyfill |
RegExp flag 's' |
ES_2018 |
recognized in input, but cannot be transpiled |
RegExp lookbehind |
ES_2018 |
recognized in input, but cannot be transpiled |
RegExp named groups |
ES_2018 |
recognized in input, but cannot be transpiled |
RegExp unicode property escape |
ES_2018 |
yes |
spread into object literal | ES_2018 |
yes |
trailing comma in param list | ES_2018 |
yes |
Object.fromEntries |
ES_2019 |
polyfill |
Optional catch binding | ES_2019 |
yes |
String.prototype.trimEnd |
ES_2019 |
polyfill |
String.prototype.trimLeft |
ES_2019 |
polyfill |
String.prototype.trimRight |
ES_2019 |
polyfill |
String.prototype.trimStart |
ES_2019 |
polyfill |
Unescaped Unicode line or paragraph separator | ES_2019 |
yes |
globalThis |
ES_2020 |
polyfill |
import.meta |
ES_2020 |
recognized in input, but cannot be output or transpiled |
Promise.allSettled |
ES_2020 |
polyfill |
String.prototype.matchAll |
ES_2020 |
polyfill |
Dynamic module import | ES_2020 |
recognized in input, but cannot be output or transpiled |
Nullish coalescing operator ??
|
ES_2020 |
yes |
Optional chaining operator ?.
|
ES_2020 |
yes |
BigInt | ES_2020 |
see BigInt Support |
Numeric separators | ES_2021 |
yes |
String.prototype.replaceAll |
ES_2021 |
yes |
Promise.any |
ES_2021 |
yes |
Logical assignment operators | ES_2021 |
yes |
WeakRefs | ES_2021 |
yes (externs only, no polyfill) |
RegExp Match indices | ES_2022 |
recognized in input, but cannot be transpiled |
.at() |
ES_2022 |
polyfill |
Error Cause | ES_2022 |
externs only, no polyfill |
Object.hasOwn |
ES_2022 |
polyfill |
class public instance fields | ES_2022 |
no (implementation started, but stalled) |
class public static fields | ES_2022 |
no (implementation started, but stalled) |
class private instance fields | ES_2022 |
no |
class private static fields | ES_2022 |
no |
class private instance methods | ES_2022 |
no |
class private static methods | ES_2022 |
no |
Top-level await | ES_2022 |
no |
#something in object |
ES_2022 |
no |
class static blocks | ES_2022 |
no |
Array find from last | ES_2022 |
no |
Hashbang grammar | ES_2022 |
no |