我定义了一个在i18n应用程序中提供字符串的接口:
interface ILocaleStringsProvider {
'foo': string
'bar': string
'baz': string
'blablabla': string
// hundreds of string properties here...
}
我不想多次重复: string
。
有没有办法一次定义所有属性的类型?
答案 0 :(得分:1)
您可以使用Record<K extends string, T>
类型。如果您对不同的字段有不同的类型,则可以使用联合类型:
type ILocaleStringsProvider =
Record<'foo'|'bar'|'baz'|'blablabla',string> &
Record<'foo2'|'bar2'|'baz2'|'blablabla2',number>;
答案 1 :(得分:1)
您可以使用Index,Union和in:
type ILocaleStringsProvider = {
[i in 'foo' | 'bar' | 'baz' | 'blablabla']: string
}