打字稿中的复杂类型

complex types in typescript

我需要在我的界面中描述一个在字符串末尾也有索引的字符串可以工作或崩溃:

export interface Test {
    date: string,
   'stat.conv[index: number].key[index: number].(work || crash)': Test2[]
}

这在打字稿中可行吗?

您可以使用 template literal type 来定义键:

export interface Test {
    date: string;
   [key: `stat.conv[${number}].key[${number}].${'work'| 'crash'}`]: any;
}

const t: Test = {
  date: '',
  'stat.conv[0].key[0].work': '', // OK
  'stat.conv[1].key[1].crash': '', // OK
  'stat.conv[x].key[y].work': '', // Error
  'stat.conv[0].key[0].nothing': '' // Error
}