簡體   English   中英

打字稿:如何為這樣的動態對象定義接口

[英]Typescript: How to define interface for dynamical object like this

假設我有將這個對象作為參數之一的函數:

{
    section: "main",
    sectionColor: "#0072c6",
    favIcon: "default",
    libraries: {
        value: "librariesFiles",
        type: "jsIncludes"
    },
    components: {
        value: "comoponentFiles",
        type: "jsIncludes"
    }
}

這是我在函數中定義此屬性的接口:

interface IgenerateFileArgumentObjectItem {
    value: string;

    type: string;
}

export interface IgenerateFileArgument {
    [key: string]: (string | IgenerateFileArgumentObjectItem);
}

不久,我正在嘗試定義具有動態屬性數量的對象,該屬性可以等於字符串值,也可以等於具有兩個屬性的另一個對象...

但是編譯器在抱怨,我認為問題出在這一行:(string | IgenerateFileArgumentObjectItem)

是否有任何明顯的錯誤或我正在嘗試做不可能的事情?

我在這里出錯

和錯誤

我創建了以下示例,您可以在TS 操場上查看它。 我能夠重建你的問題。 似乎以下庫文件,componentFiles,modellingContentStates,sharePointStates中的一個(或全部)的類型為string []。

interface IgenerateFileArgumentObjectItem {
    value: string;

    type: string;
}

export interface IgenerateFileArgument {
    [key: string]: (string | IgenerateFileArgumentObjectItem);
}

var p: string = 'uo'
var lol :string[] = ['no', 'po']; // Fix this to string type
var a: IgenerateFileArgument = {
    c: {
        value: p,
        type:'mo'
    },
    b:'lol',
    e: {
        value:'yo',
        type:'mo'
    },
    m: {  // you can remove this instead
        value:lol,
        type:'go'
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM