我想定义一个通用类型,我可以在其中传递一个字符串值作为通用参数,并用它来定义该类型上的键,例如:
const foo: MyType<'hello'> = {
hello: "Goodbye", // this key is required
bar: 2
}
我尝试将其定义如下:
const type MyType<T extends string> = {
[key: T]: string,
bar: number,
};
但是我得到一个错误,说An index signature parameter type must be 'string' or 'number'
,即使在这种情况下也必须是字符串。这个问题有不同的语法吗?还是目前这种打字稿的局限性?
答案 0 :(得分:1)
也许是这样的:
const foo: MyType<'hello'> = {
hello: "Goodbye", // this key is required
bar: 2
}
type MyType<K extends string> = {
bar: number;
} & Record<K, string>