sindresorhus/eslint-plugin-unicorn

Rule proposal: `require-proxy-set-returns-true`

Geschlossen

#2.178 geöffnet am 19.07.2023

 (2 Kommentare) (2 Reaktionen) (0 zugewiesene Personen)JavaScript (468 Forks)user submission
help wantednew rule

Repository-Metriken

Stars
 (5.022 Sterne)
PR-Merge-Metriken
 (Durchschn. Merge 4h 30m) (26 gemergte PRs in 30 T)

Beschreibung

Description

According to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set#return_value

If the set() method returns false, and the assignment happened in strict-mode code, a TypeError will be thrown.

The following code throws.

(function () {
    "use strict";
    const proxy = new Proxy({}, {
        set(target, property, value) {
        }
    });
    proxy.foo = 'bar'
})()

// Uncaught TypeError: 'set' on proxy: trap returned falsish for property 'foo'

This rule enforce the set to explicitly return true. This rule also allow return Reflect.set() call.

Fail

const proxy = new Proxy({}, {
    set(target, property, value) {
        target[property] = value;
    }
});
const proxy = new Proxy({}, {
    set(target, property, value) {
        target[property] = value;
        return 1; // Will work, but should be `true` to be clear.
    }
});

Pass

const proxy = new Proxy({}, {
    set(target, property, value) {
        target[property] = value;
        return true;
    }
});
const proxy = new Proxy({}, {
    set(target, property, value) {
        return Reflect.set(...arguments);
    }
});

Additional Info

No response

Contributor Guide