如何为包含特定函数数组的 JSON 对象编写接口

Posted

技术标签:

【中文标题】如何为包含特定函数数组的 JSON 对象编写接口【英文标题】:How to write an interface for a JSON object that contains an array of specific functions 【发布时间】:2018-03-05 16:30:58 【问题描述】:

我想为 JSON 对象创建一个接口。它有 n 个名称未知的键,每个值都是具有特定签名的函数数组。

// CLASSES
class Server 

    // Private variables
    mapping : IMapping = 

    // Public functions
    public use(endPoint = "", handler : IHandler) : void 

        // Check if the end point exists in the mapping
        if(this.mapping[endPoint] === undefined) 

            this.mapping[endPoint] = 
                [endPoint] : [handler]
            ;

         else 

        
    



// INTERFACES
interface IMapping

    [key : string] : IHandler[];


interface IHandler 
    (req : object, res : object, next : object) : void;

我的代码失败了:this.mapping[endPoint] with

Type ' [x: string]: IHandler[]; ' is not assignable to type 'IHandler[]'.
Property 'length' is missing in type ' [x: string]: IHandler[]; '. 

【问题讨论】:

【参考方案1】:

应该是:

this.mapping[endPoint] = [handler];

【讨论】:

感谢您的回复!在这种情况下,我会像这样更正它: // 检查映射中是否存在端点。如果没有,则创建它 if(this.mapping[endPoint] === undefined) this.mapping[endPoint] = []; // 将端点与处理程序关联 this.mapping[endPoint].push(handler);

以上是关于如何为包含特定函数数组的 JSON 对象编写接口的主要内容,如果未能解决你的问题,请参考以下文章

如何为包含数组数组的对象编写 Mongoose Schema?

我如何为包含数组数组的对象编写猫鼬模式?

如何为 PyYAML 编写表示器?

如何为复杂对象编写自定义 JSON 解码器?

如何为我的 IDE 编写/引用易于管理的 PHP 可调用函数

如何为对象数组定义接口?