@IdoNotKnowWhatToSay

Как сделать так, чтобы свойства интерфейса или типа начинались с определенного символа?

Пыталась решить это при помощи шаблонных литералов, но ничего не вышло.

interface SomeInterface {
    '@prop1': string;
    '@prop2': string;
    '@propN': string;
}


Можно ли сделать так, чтобы не приходилось добавлять свойства вручную? Нужно, чтобы любой свойство начиналось со знака "@". Свойств может быть сколько угодно!
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
WblCHA
@WblCHA
К сожалению, литералы с ключами неработают, так что только так:
const asSomeInterface = <K extends PropertyKey>(obj: { [P in K]: P extends `@${string}` ? string : never }) => obj;

asSomeInterface({
  '@asd': 'asd',
  'asd': 'asd', // error
});

Во всяком случае пока, я так понял вполне вероятно это исправят в обозримом будущем.
https://stackoverflow.com/questions/65878880/types...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы