Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
70 views
in Technique[技术] by (71.8m points)

How can I map a patternProperties from json schema to a typescript interface

I am creating a typescript interface corresponding to a json schema. I have the following field in my json schema:

         "styles": {
            "title": "Style Definitions",
            "description": "Style definition",
            "type": "object",
            "patternProperties": {
                "^.*$": {
                    "oneOf": [
                        { "$ref": "#/definitions/definition1" },
                        { "$ref": "#/definitions/definition2" }
                    ]
                }
            }
         }

I want to create my interface something like this:

interface Styles {
    [key: string]: Definition1 | Definition2;
} 

But this isn't right and doesn't capture the correct meaning of the json schema. Can someone tell me how to do this?

How can I write this thing in my typescript interface?

question from:https://stackoverflow.com/questions/65935761/how-can-i-map-a-patternproperties-from-json-schema-to-a-typescript-interface

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Assuming key inside patternProperties is a dynamic value, I think this is what you want:

interface Style {
    title: string;
    description: string;
    type: string;
    patternProperties: {
        [key: string]: {
            [key: string]: {
                [key: string]: string,
                // or $ref: string
            }[];
        };
    };
}

TS Playground


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...