ES6 classes fiddle
'use strict';
class Thing {
constructor(n) {
this._name = n;
}
set name(n) {
this._name = n.toUpperCase();
}
get name() {
return `Hello my name is: ${this._name}`;
}
}
class Something extends Thing {
constructor(n) {
super(n);
}
speak() {
console.log(this.name);
}
}
let main = () => {
let t = new Thing('john');
console.log(t.name);
let s = new Something('James');
s.speak();
};
main();
'use strict';
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Thing = (function () {
function Thing(n) {
_classCallCheck(this, Thing);
this._name = n;
}
_createClass(Thing, [{
key: 'name',
set: function set(n) {
this._name = n.toUpperCase();
},
get: function get() {
return 'Hello my name is: ' + this._name;
}
}]);
return Thing;
})();
var Something = (function (_Thing) {
_inherits(Something, _Thing);
function Something(n) {
_classCallCheck(this, Something);
return _possibleConstructorReturn(this, Object.getPrototypeOf(Something).call(this, n));
}
_createClass(Something, [{
key: 'speak',
value: function speak() {
console.log(this.name);
}
}]);
return Something;
})(Thing);
var main = function main() {
var t = new Thing('john');
console.log(t.name);
var s = new Something('James');
s.speak();
};
main();
npm install -g eslint babel-eslint babel-cli
install the Sublime Text Packages Babel, SublimeLinter & SublimeLinter-contrib-eslint
Add the .eslintrc to your project root or your $HOME folder.
To compile es6 to es5 run:
babel index.js -o app.js
# MAC OSX
.DS_Store
# WIN
Thumbs.db
# nodejs and web dev
node_modules
bower_components
# sublime sftp plugin
sftp-config.json
# sublime
*.sublime-project
*.sublime-workspace
# processing
sketch.properties
build-tmp
# codekit
.codekit-cache
# a file with private data
private.json
private
# for extendscript ID dev
pdfs
.idlk
# for CRAN
# History files
.Rhistory
# Example code in package build process
*-Ex.R
# R data files from past sessions
.Rdata
# RStudio files
.Rproj.user/
# GOLANG
# After Effects
Adobe\ After\ Effects\ Auto-Save/
Adobe\ After\ Effects\ Auto-Speichern
# Particle Photon
*.bin
{
"parser": "babel-eslint",
"env": {
"node": true,
//"es6":true
},
"ecmaFeatures": {
"jsx": true
},
"globals": {
},
"plugins": [
"react"
],
"rules": {
// Possible Errors
"comma-dangle": [2, "never"],
"no-cond-assign": 2,
//"no-console": 2,
"no-constant-condition": 2,
"no-control-regex": 2,
"no-debugger": 2,
"no-dupe-keys": 2,
"no-empty": 2,
"no-empty-character-class": 2,
"no-ex-assign": 2,
"no-extra-boolean-cast": 2,
"no-extra-parens": 0,
"no-extra-semi": 2,
"no-func-assign": 2,
"no-inner-declarations": 2,
"no-invalid-regexp": 2,
"no-irregular-whitespace": 2,
"no-negated-in-lhs": 2,
"no-obj-calls": 2,
"no-regex-spaces": 2,
"no-reserved-keys": 0,
"no-sparse-arrays": 2,
"no-unreachable": 2,
"use-isnan": 2,
"valid-jsdoc": 0,
"valid-typeof": 2,
// Best Practices
"block-scoped-var": 2,
"complexity": 0,
"consistent-return": 2,
"curly": 2,
"default-case": 2,
"dot-notation": 2,
"eqeqeq": 2,
"guard-for-in": 2,
"no-alert": 2,
"no-caller": 2,
"no-div-regex": 2,
"no-else-return": 2,
"no-empty-label": 2,
"no-eq-null": 2,
"no-eval": 2,
"no-extend-native": 2,
"no-extra-bind": 2,
"no-fallthrough": 2,
"no-floating-decimal": 2,
"no-implied-eval": 2,
"no-iterator": 2,
"no-labels": 2,
"no-lone-blocks": 2,
"no-loop-func": 2,
"no-multi-spaces": 2,
"no-multi-str": 0,
"no-native-reassign": 2,
//"no-new": 2,
"no-new-func": 2,
"no-new-wrappers": 2,
"no-octal": 2,
"no-octal-escape": 2,
"no-process-env": 2,
"no-proto": 2,
"no-redeclare": 2,
"no-return-assign": 2,
"no-script-url": 2,
"no-self-compare": 2,
"no-sequences": 2,
"no-unused-expressions": 2,
"no-void": 0,
"no-warning-comments": 2,
"no-with": 2,
"radix": 2,
"vars-on-top": 0,
"wrap-iife": 2,
"yoda": 2,
// Strict Mode
//"strict": [2, "global"],
// Variables
"no-catch-shadow": 2,
"no-delete-var": 2,
"no-label-var": 2,
"no-shadow": 2,
"no-shadow-restricted-names": 2,
"no-undef": 2,
"no-undef-init": 2,
"no-undefined": 2,
//"no-unused-vars": 2,
"no-use-before-define": 2,
// Stylistic Issues
"indent": [2, 2, {
"SwitchCase": 1
}],
"brace-style": 2,
"camelcase": 0,
"comma-spacing": 2,
"comma-style": 2,
"consistent-this": 0,
"eol-last": 2,
"func-names": 0,
"func-style": 0,
"key-spacing": [2, {
"beforeColon": false,
"afterColon": true
}],
"max-nested-callbacks": 0,
"new-cap": 2,
"new-parens": 2,
"no-array-constructor": 2,
"no-inline-comments": 0,
"no-lonely-if": 2,
"no-mixed-spaces-and-tabs": 2,
"no-nested-ternary": 2,
"no-new-object": 2,
"semi-spacing": [2, {
"before": false,
"after": true
}],
"no-spaced-func": 2,
"no-ternary": 0,
"no-trailing-spaces": 2,
"no-multiple-empty-lines": 2,
"no-underscore-dangle": 0,
"one-var": 0,
"operator-assignment": [2, "always"],
"padded-blocks": 0,
"quotes": [2, "single"],
"quote-props": [2, "as-needed"],
"semi": [2, "always"],
"sort-vars": [2, {"ignoreCase": true}],
"space-after-keywords": 2,
"space-before-blocks": 2,
"object-curly-spacing": [2, "never"],
"array-bracket-spacing": [2, "never"],
"space-in-parens": 2,
"space-infix-ops": 2,
"space-return-throw-case": 2,
"space-unary-ops": 2,
"spaced-comment": 2,
"wrap-regex": 0,
// Legacy
"max-depth": 0,
"max-len": [2, 120],
"max-params": 0,
"max-statements": 0,
"no-plusplus": 0
}
}
{
"presets": [
"es2015"
]
}
es6 classes