#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. Это то, что я искал. Спасибо!