Stratégie unique de ValueScript pour prévenir les effets secondaires (TL;DR)
Feb 23 2023
ValueScript est essentiellement TypeScript sans effets secondaires. La syntaxe est la même (elle utilise littéralement un analyseur TypeScript non modifié).
ValueScript est essentiellement TypeScript sans effets secondaires.
La syntaxe est la même (elle utilise littéralement un analyseur TypeScript non modifié). Le comportement est essentiellement le même, mais les différences incluent ces trois choses pour éviter les effets secondaires :
Tout d'abord, ValueScript utilise la sémantique des valeurs :
const origin = { x: 0, y: 0 };
let pos = origin; // Assigns the *value*, not the same identity
pos.y += 10; // Move up 10 units
return origin;
// ~~~~~~ JavaScript: (0, 10)
// ~~~~~~ ValueScript: (0, 0)
let nextId = 1;
// ~~~~~~ `nextId` should be declared using `const` because it is
// implicitly const due to capture
function generateId() {
const result = nextId;
nextId++;
// ~~~~~~ Cannot mutate captured variable `nextId`
return result;
}
class Point {
constructor(
public x: number,
public y: number,
) {}
rotate(angle: number) {
const prev = this;
const cos = Math.cos(angle);
const sin = Math.sin(angle);
this.x = cos * prev.x - sin * prev.y;
// prev.x is not affected by the previous line (see first point)
// vehicle.pos is also not affected yet, but it will be (this point)
this.y = sin * prev.x + cos * prev.y;
}
}
const vehicle = {
pos: new Point(3, 5);
};
// Inside `rotate`, `this` changes to (-5, 3)
// Upon return, that value is assigned to vehicle.pos
vehicle.pos.rotate(Math.PI / 2);
Voici l' article complet si vous avez changé d'avis sur le fait de ne pas le lire :).
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































