2 votes

Quel est l'équivalent TypeScript valide le plus propre de la syntaxe à trois points ?

J'essaie de filtrer props dans mon code TypeScript/React, cependant les propriétés restantes/étalées (syntaxe à trois points) ... ) sont pas encore pris en charge par TypeScript :

const NavItemPass = (props) => {
    const { active, activeKey, activeHref, ...rest } = props;
    return <NavItem {...rest} />;
};

Quelle serait la syntaxe immuable équivalente la plus propre avec TypeScript 1.8 ?

2voto

T.J. Crowder Points 285826

Babel le fait en créant une fonction qui crée un nouvel objet. Vous pouvez faire cela, en créant un objet réutilisable, puis l'utiliser.

Je vais donner un exemple en JavaScript, que vous pouvez facilement traduire en TypeScript :

function objectWithout(obj, keys) {
    let target = {};
    Object.keys(obj).forEach(k => {
        if (keys.indexOf(k) == -1) {
            target[k] = obj[k];
        }
    });
    return target;
}

Puis

const NavItemPass = (props) => {
    return React.createElement(NavItem, objectWithout(props, ["active", "activeKey", "activeHref"]));
};

Pas très satisfaisant. :-||

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X