#typescript #generics
#typescript #общие ограничения
Вопрос:
Я хочу определить универсальный тип, где я могу передать строковое значение в качестве универсального аргумента и использовать его для определения ключа для типа, например:
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'
, хотя в данном контексте это должна быть строка. Существует ли какой-то другой синтаксис для этой проблемы? Или это ограничение typescript в настоящее время?
Ответ №1:
Может быть, что-то вроде этого:
const foo: MyType<'hello'> = {
hello: "Goodbye", // this key is required
bar: 2
}
type MyType<K extends string> = {
bar: number;
} amp; Record<K, string>