bugfix> javascript > 投稿

Sencha Cmd v6.5.3.6を実行すると、次のエラーメッセージが表示されます。

[ERR] C2001: Closure Compiler Error (This code cannot be converted from ES6. extending native class: Array) -- compression-input:111263

エラーはこのコードによって引き起こされます:

class Chains extends Array {
}

エラーは、クラス宣言内のメソッドで引き続き発生します。

Sencha Cmdでこのコードをコンパイルする方法はありますか?

更新しました : 問題を解決するために、コードを次のように変更します。

function Chains() { };
Chains.prototype = new Array;
Chains.prototype.anyMethod = function () { }

回答 2 件
  • ES6以前のコードに変換できないES6の機能を使用しています。

    IE11のサポートはまだ削除されていないため、Sencha CmdはデフォルトでコードをES6以前のコードに変換します。

    公式ドキュメントで説明されているように、Sencha Cmd 6.5.0以降ではコードトランスピレーションを無効にできます。

    There are cases where you won't need all that transpiling. Maybe you’re targeting Electron or you only support modern browsers that have all these features. You can disable the transpiler and still use the Sencha Cmd code compressor against your native ES6 code. Just a tweak to the app.json file and say goodbye to the transpiler and its polyfills:

    
    "output": {
        "js": {
            "version": "ES6"
        }
    }
    
    

  • 現時点では、ExtJSがその構文をサポートしているとは思わない。当分の間、あなたはそれらの構文を使わなければならないかもしれません:

    Ext.define('Chains', {
        extend: 'Array'
    });
    
    

    次に、コードで次のように呼び出すことができます。

    var chns = Ext.create('Chains');
    chns.push('a');
    console.log(chns);
    
    

あなたの答え