【问题标题】:Can I use an interface to define allowable fields for an object?我可以使用接口为对象定义允许的字段吗?
【发布时间】:2012-10-31 04:35:54
【问题描述】:

现在我的理解是我可以像这样声明一个接口:

interface IParams {
    success: bool;
    pk: string;
}

还有这样的函数:

function x () : IParam {
   var params = {
      success: true,
      pk: "xx"
   };
   return params;
}

这很好用,但有没有办法我可以做到这一点并拥有 params 变量只接受success 和pk 的值?我想要的是某种方式可以阻止我执行以下操作:

function x () : IParam {
   var params = {
      successssssssssssss: true,
      pk: "xx"
   };
   return params;
}

【问题讨论】:

    标签: javascript jquery typescript


    【解决方案1】:
    interface IParams 
    {
        success: bool;
        pk: string;
    }
    
    function x () : IParams
    {
       var params = {
          success: true,
          pk: "xx"
       };
    
       if ( params.success && params.pk)
         return params;
       else
         // handle exception
    }
    

    然后x函数中的代码只有在param中有两个变量时才会执行

    【讨论】:

    • 问题是进入参数的信息是在函数 x 内部确定的。里面有很多逻辑,但为了这个例子的目的,我把它简单化了。我需要的是一种方法来确保例如在函数的第 200 行我不会不小心写 params.suuuuccess = false;
    • 但是仍然没有检查参数?我仍然可以在“var params = {”行之后输入任何内容,我想尝试对参数进行类型检查。谢谢
    【解决方案2】:

    只需在 var 声明上添加类型注释即可:

    var params : IParams = {
      success: true,
      pk: "xx"
    };
    

    【讨论】:

      猜你喜欢
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 2021-12-06
      • 2011-04-29
      • 2016-04-23
      • 2011-01-11
      相关资源
      最近更新 更多