非标准 TypeScript 接口/类字段

Posted

技术标签:

【中文标题】非标准 TypeScript 接口/类字段【英文标题】:non-standard TypeScript interface/class fields 【发布时间】:2016-08-05 05:18:42 【问题描述】:

我正在处理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-fakerx-chance

【问题讨论】:

支持?? - github.com/Microsoft/TypeScript/issues/4653 【参考方案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

【讨论】:

以上是关于非标准 TypeScript 接口/类字段的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript 类使用联合类型字段实现接口导致错误 (2322)

TypeScript(16): 类

4TypeScript 类

软件开发入门教程网之TypeScript 类

typeScript入门接口

typescript @types 包版本应该匹配它们的非类型包吗?