非标准的TypeScript接口/类字段

时间:2016-04-13 21:21:31

标签: json class interface typescript

我正在JSON-Schema-faker project处理我们使用以下TypeScript接口的地方:

interface IGeneratorSchema { faker?: any; chance?: any; } 对象如下: { "faker": "name.findName" } 要么: { "chance": { "bool": { "likelihood": 100 } } }

现在我们需要引入对x-fakerx-chance字段的支持,这些字段在语义上与fakerchance相同,例如:

{ "x-faker": "name.findName" } 要么: { "x-chance": { "bool": { "likelihood": 100 } } }

我知道我可以在TypeScript界面​​中创建x-fakerx-chance字段。 问题是 - 我该如何克服这一点?我希望TypeScript严格只允许这四个字段:fakerchancex-faker,{{1} }。

1 个答案:

答案 0 :(得分:1)

  

我希望TypeScript严格只允许这四个字段:faker,chance,x-faker,x-chance

您可以声明字符串属性:

interface IGeneratorSchema {
    faker?: any;
    chance?: any;
    "x-faker"?: any;
    "x-chance"?: any;
}

const foo:IGeneratorSchema = { "x-faker": {} } // Okay
const bar:IGeneratorSchema = { bad: {} } // Error: unknown property

买者

仅在新的对象文字场景中阻止额外成员:https://basarat.gitbooks.io/typescript/content/docs/types/freshness.html