有没有办法在Javascript中嵌套模拟的命名参数?

uubf1zoe  于 2023-01-01  发布在  Java
关注(0)|答案(1)|浏览(123)

背景

我正在创建一个处理dom操作的函数,比如创建一个元素,在元素上添加/设置一些属性,以及将其附加到父元素。我想使用命名参数,但是通过研究我发现JS中没有内置这个特性。这个stack overflow question帮助我用parameter destructuring "模拟"命名参数,并且我能够成功地让它工作:

const createElement = function createNewDomElement({
        parent, 
        tag,
        idName, 
        className,
        innerHTML,
        href
    }={}) {
    
    if (parent) {
        console.log(parent);  // Works
    }

}

visual studio代码提供了一个提示,告诉我哪些参数是可用的:

问题和尝试的解决方案

由于这些参数中的一些是必需的,而其余的是可选的,我希望将可选参数分离到函数参数对象中的一个单独的对象中,而不会丢失显示哪些参数可用的Visual Studio提示。

const createElement = function createNewDomElement({
        tag,
        options: {
            parent, 
            idName, 
            className,
            innerHTML,
            href
        }
    }={}) {
    
    if (options) {
        options.forEach(item => console.log(item));
    }

}

但是,当我尝试以与第一个示例中访问父参数相同的方式访问选项时,它显示未定义。

问题

是否有一种方法可以嵌套模拟的命名参数,同时保持显示哪些参数可用的Visual Studio代码提示?
我也愿意接受有效的解决方案,但我失去了暗示。

6vl6ewon

6vl6ewon1#

您将无法迭代这些属性,但可以通过这种方式访问它

function createElement({
        tag,
        options: {
            parent, 
            idName, 
            className,
            innerHTML,
            href
        }
    } = { options: {} }) {
    
    if (parent) {
        console.log(parent)
    }
}

相关问题