Typescript — способ проверить наличие только свойств и игнорировать проверку типа самого свойства без использования каких-либо?

#typescript

#typescript

Вопрос:

У меня есть интерфейсы для всех разных типов данных, и это явные типы без использования ‘any’. Есть ли какой-либо способ использовать проверку типов с этими интерфейсами, но которые сравнивают только существование свойств этих интерфейсов без проверки типов значений свойств?

Комментарии:

1. как насчет // eslint-disable-next-line ?

2. Я не хочу не сравнивать типы, я хочу быть уверенным, что объект A содержит те же свойства, что и интерфейс, без проверки типов этих свойств и без использования ‘any’, потому что у меня есть другие объекты, которые должны соответствовать этим интерфейсам точно так же, как обычно.

Ответ №1:

Вы можете создать сопоставленный тип, который позволит вам использовать ваши интерфейсы с явными типами и создавать новые типы со всеми теми же свойствами, которые установлены any . Например:

 interface StrongType {
  foo: string,
  bar: number
}

type PropertiesExist<T> = {
  [P in keyof T]: any;
}

type LooseType = PropertiesExist<StrongType>


// No error; it has all the properties, even though they're different types
const thing: LooseType = {
  foo: true,
  bar: () => {}
}

// Error: it's missing the bar property
const thing2: LooseType = {
  foo: 123,
}
 

Ссылка на игровую площадку

Комментарии:

1. Это то, что я искал. Спасибо!