如何在TypeScript中使用一组有限的索引创建接口

时间:2019-02-23 02:33:59

标签: typescript typescript-typings

我有一个函数接受类型为Record<string, string>的变量,如何创建类型有限的索引集而没有ts编译器错误。

是否可以创建具有有限类型的索引集的接口?

type MyRecord = Record<string, string>

interface MyA {
    index1: string
    index2: 'true' | 'false'
}

function fn(a: MyRecord) {
    //do something
}

const myA: MyA = {
    index1: 'index',
    index2: 'true'
}
fn(myA) // error: Index signature is missing in type 'MyA'.

除非我将MyA更改为type My = {...}

1 个答案:

答案 0 :(得分:0)

您始终可以在类型中添加索引签名:

interface MyA {
  index1: string
  index2: 'true' | 'false'
  [key: string]: string;
}

索引签名必须与您的其他属性兼容(在这种情况下,string是兼容的)。