andreyvoroncov
@andreyvoroncov
мечтатель

Как вывести тип с исключением значений?

Можно сделать тип с литералами строки
type myKey = 'line' | 'abzac' | 'text'
myKey будет принимать одно из трех заданных значений
А как сделать тип принимающий любое строковое значение кроме указанных трех?
Пытался сделать так
type myKey = 'line' | 'abzac' | 'text'

type IEX = {
 [key: string]: string
}

type antiKey = Exclude<IEX, myKey>;

let znac: antiKey = {
	anystring: 'stroka',
	line: 'online',
	text: 'abcdef'
}

но это не работает...
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
WblCHA
@WblCHA
type Keys = 'line' | 'abzac' | 'text'

type IEX = Record<string, string>

type AntiKey = IEX & Partial<Record<Keys, never>>
// or
type AntiKey = IEX & { [Key in Keys]?: never }

// валидное значение
let znac: AntiKey = {
  oneline: 'anytext',
  otherline: 'othertext'
}
// невалидное
let er: AntiKey = {
  text: 'no',
  other: 'txt'
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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