打字稿对象模式?

时间:2017-10-26 09:56:24

标签: javascript node.js typescript

我刚刚开始使用TypeScript,我想知道如何为这种类型的对象声明一个接口:

const branch = {
  'CN': {
    'name': 'CN Name',
    'branch': 'Chinoise',
    'url': 'CN URL'
  },
  'DE': {
    'name': 'DE Name',
    'branch': 'Allemande',
    'discord': 'DE Discord',
    'url': 'DE URL'
  },
  'EN': {
    'name': 'EN Name',
    'branch': 'Anglaise',
    'url': 'EN URL'
  },
  [...]
}

如您所见,我有这个界面:

interface Branch {
    name: string,
    branch: string,
    discord?: string,
    url: string
}

在上面的代码中重复了几次。 所以我想知道是否可以对TypeScript说:“嘿,Branch对象包含这个重复多次的界面。”

谢谢!

1 个答案:

答案 0 :(得分:2)

你可以这样做:

const branch: {[key: string]: Branch} = ...;

这意味着分支变量是一个对象,其键的类型为字符串,值为Branch;

索引签名的官方文档:https://www.typescriptlang.org/docs/handbook/interfaces.html