6.19.0 est disponible
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
object-rest-spread fonctionne désormais de manière autonome et de nouvelles APIs d'options pour les plugins ont été ajoutées !
Résumé de la v6.19.0 (2016-11-16)
🚀 Nouvelle fonctionnalité
#4755 Rendre object-rest-spread utilisable comme plugin indépendant. (@hzoo)
Cette refonte corrige un problème récurrent où le plugin object-rest-spread dépendait de 2 autres plugins pour compiler correctement RestProperty.
Cette correction est essentielle étant donné que les plugins doivent être indépendants, et vitale pour babel-preset-env car les nouveaux environnements prennent nativement en charge la déstructuration.
Entrée
const { a, ...b } = c;
Sortie
const { a } = c; // remove the `...b`
const b = _objectWithoutProperties(c, ["a"]); // use the helper
C'est fascinant de voir tous les endroits où la déstructuration est applicable !
RestProperty
function a({ b, ...c }) {} // Parameters
const { a, ...b } = c; // VariableDeclaration
export var { a, ...b } = c; // ExportNamedDeclaration
try {} catch ({a, ...b}) {} // CatchClause
({a, ...b} = c); // AssignmentExpression
for ({a, ...b} of []) {} // ForXStatement
SpreadProperty
var a = { ...b, ...c } // ObjectExpression
#4544 Ajouter l'option spec à "transform-class-properties". (@motiz88)
Les propriétés de classe utiliseront Object.defineProperty au lieu d'un simple this.x = y.
Les champs statiques utiliseront value: undefined même s'ils ne sont pas initialisés.
Utilisation
{
"plugins": [
["transform-class-properties", {
"spec": true
}]
]
}
Entrée
class Foo {
static bar;
baz = 'guy';
}
Sortie
var Foo = function Foo() {
_classCallCheck(this, Foo);
this.baz = 'guy';
};
Sortie avec "spec": true
var Foo = function Foo() {
babelHelpers.classCallCheck(this, Foo);
_initialiseProps.call(this);
};
Object.defineProperty(Foo, "bar", {
enumerable: true,
writable: true,
value: undefined
});
var _initialiseProps = function () {
Object.defineProperty(this, "bar", {
enumerable: true,
writable: true,
value: foo
});
};
#4836 Ajouter les utilitaires path.isAncestor et path.isDescendant. (@boopathi)
Nous avons ajouté 2 méthodes "d'ascendance" similaires à path.findParent :
Utilisation
let programPath, numberPath;
traverse(ast, {
Program(path) { programPath = path; },
NumberPath(path) { numberPath = path; },
});
programPath.isAncestor(numberPath); // true
numberPath.isDescendant(programPath); // true
#4835 Ajouter clearCache et clearPath comme APIs distinctes sous traverse. (@boopathi)
Utilisation
traverse.clearCache(); // clears both path's and scope cache
traverse.clearCache.clearPath();
traverse.clearCache.clearScope();
#4827 Ajouter l'option jsonCompatibleStrings à babel-generator. (@kangax)
Utilisation
{
"generatorOpts": {
"jsonCompatibleStrings": true // defaults to false
}
}
Définir sur true pour que le générateur utilise jsesc avec "json": true. Cela affichera "\u00A9" au lieu de "©";
#3547 Ajouter flowCommaSeparator à babel-generator. (@sampepose)
Utilisation
{
"generatorOpts": {
"flowCommaSeparator": true // defaults to false
}
}
Actuellement, deux syntaxes sont supportées (, et ;) dans les types d'objets Flow. L'utilisation des virgules correspond au style le plus populaire et à la manière dont les objets sont définis en JavaScript, rendant l'écriture plus naturelle.
var a: { param1: number; param2: string }
var a: { param1: number, param2: string }
#3553 Ajouter t.isNodesEquivalent. (@hzoo)
Utilisation
assert(t.isNodesEquivalent(parse("1 + 1"), parse("1+1")) === true);
#4789 Prendre en charge import() stage-2 comme import contextuel dans transform-es2015-modules-systemjs. (@guybedford)
Vous devrez ajouter le preset stage-2 ou inclure explicitement babel-plugin-syntax-dynamic-import (non activé par défaut).
export function lazyLoadOperation () {
return import('./x')
.then(function (x) {
x.y();
});
}
🐛 Corrections de bogues
#4830 Imprimera le plus court des NumericLiteral si l'option minified est utilisée. (@shinew)
Entrée
5e1;
5e4;
Sortie
50;
5e4;
#4832 Correction de transform-es2015-modules-systemjs pour garantir une itération cohérente des modules. (@guybedford)
import "2"; // should be imported first
import "1"; // second
#4813 Correction du type de binding des variables déstructurées en lien avec transform-react-constant-elements (@STRML)
Corrige un problème où les paramètres déstructurés étaient remontés de manière incorrecte.
Entrée
function render({ text }) {
return () => (<Component text={text} />);
}
Sortie
function render(_ref) {
let text = _ref.text;
var _ref2 = <Component text={text} />;
return () => _ref2;
}
🌏 Contributeurs : 10
-
Boopathi Rajaa (boopathi)
-
Guy Bedford (guybedford)
-
Henry Zhu (hzoo)
-
Juriy Zaytsev (kangax)
-
Moti Zilberman (motiz88)
-
Sam Pepose (sampepose)
-
Samuel Reed (STRML)
-
Scott Stern (sstern6)
-
Shine Wang (shinew)
-
lion (lion-man44)
Consultez Github pour le journal des modifications complet !