打字稿使用键作为字符串的限制

时间:2018-09-19 13:43:19

标签: typescript

我有以下界面:

interface Address {
   street: string
   town: string
   country: string
}

我希望函数接受必须为三个字符串之一的键参数:

function useKey(key: "street" | "town" | "country") {
}

我能以某种方式从界面生成键参数的类型吗?

2 个答案:

答案 0 :(得分:4)

对于这种确切的特定情况,Typescript具有keyof类型运算符:

function useKey(key: keyof Address ) {
}

这将为您提供联合中某个类型的所有公钥。

您甚至可以使用类型查询来获取已归档字段的类型:

function getValue<K extends keyof Address>(key: K): Address[K]{
     //...
}

答案 1 :(得分:2)

您可以使用keyof运算符:

type AddressKey = keyof Address