Tìm kiếm trang web

javascript - Phiên bản TypeScript hợp lệ sạch sẽ nhất tương đương với cú pháp ba chấm là gì?


Tôi đang cố gắng lọc bỏ props trong mã TypeScript/React của mình, tuy nhiên các thuộc tính rest/spread (cú pháp ba chấm ...) vẫn chưa được TypeScript hỗ trợ:

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

Cú pháp tương đương bất biến sạch nhất với TypeScript 1.8 sẽ là gì?

Câu trả lời #1

Babel thực hiện điều đó bằng cách tạo ra một hàm tạo một đối tượng mới. Bạn có thể muốn làm điều đó, tạo một cái đẹp có thể tái sử dụng, và sau đó sử dụng nó.

Tôi sẽ đưa ra một ví dụ bằng JavaScript, mà bạn có thể dễ dàng dịch sang TypeScript:

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

Sau đó

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

Không hài lòng lắm. :-|