考虑一个简单的索引接口:
interface FormData {
[K: string]: string;
}
那个小家伙工作得很好。但是,有一种情况下我想允许一个属性成为字符串数组。
interface AcmeFormData extends FormData {
foobar: string[];
}
Typescript 发出以下警告:
属性 'foobar' 的类型为 'string[]',不能赋值给类型为字符串索引类型 'string'。
经过查阅文档,似乎以下代码是可以实现的,但同样会产生警告。
interface FormData {
[K: string]: string;
foobar: string[];
}
需要注意的是,我希望避免使用联合类型 ([K: string]: string | string[];
),因为99%的情况下,数据都将是单个字符串值,因此希望避免使用类型提示。
这种情况是否可行?还是说我在试图滥用Typescript?