如何识别传递给Record子类的构造函数的值何时在Immutable.JS中无效?

时间:2017-01-17 05:43:27

标签: immutable.js

我知道如果最初未在子类中定义键名,则Record子类不接受构造函数中的键值对。但是,我希望能够识别在Record的构造函数中传递无效密钥对的时间。

例如,

export default class MessageTester extends Record ({
    successStatus: null,
    message: null,
}) {
    constructor(dataSet) {
         /* Pseudo-code
          * if (dataSet keys do not match MessageTester keys) {
          *     console.log('Keys passed to constructor do not match.');
          */
          super(dataSet);
    }

}

我考虑过从dataSet和MessageTester中检索密钥并比较它们,但后来我想出了另一个解决方案。我会通过从dataSet值中检索键来测试键。我无法使用this关键字获取记录在类内部工作的get方法。我上面列出的主要问题的任何解决方案都非常棒。

let dataSetKeys = Object.keys(dataSet);
for (let i = 0; i < dataSetKeys.length; i++) {
    if(this.get(dataSetKeys[i]) === undefined)
        console.log('Invalid key found.');
}

1 个答案:

答案 0 :(得分:0)

好的,所以我至少想出了一个底部代码片段的解决方案。我应该一直在使用超级,因为get是记录的一种方法.....对不起,我的简单错误。但好奇的是,有更好的解决方案吗?

let dataSetKeys = Object.keys(dataSet);
for (let i = 0; i < dataSetKeys.length; i++) {
    if(super.get(dataSetKeys[i]) === undefined)
        console.log('Invalid key found.');
}