Типы typescript
Функция возращает объект с вложенными объектами wrapper и title . Каким образом можно указать что у ВСЕХ значений в объектах wrapper и title тип String. Просто не вижу смысла для каждого св-ва описывать тип. Может я не прав, подскажите плз.
let style = () => {
return {
wrapper: {
width: '150px',
border: '1px solid black',
color: 'red',
},
title: {
color: 'red',
height: '150px',
margin: '0 auto'
}
}
}
//==========================
interface Style {
wrapper: {
width: string;
border: string;
color: string;
},
title: {
color: string;
height: string;
margin: string;
}
}
Ответы (2 шт):
Автор решения: Pavel Grishaev
→ Ссылка
interface Style {
wrapper: Partial<CSSStyleDeclaration>
title: Partial<CSSStyleDeclaration>
}
или
interface Style {
wrapper: { [key: string]: string }
title: { [key: string]: string }
}
или
interface Style {
[key: string]: { [key: string]: string }
}
или
interface Style {
[key: string]: Partial<CSSStyleDeclaration>
}
Автор решения: Серега Мангышев
→ Ссылка
Вы можете автоматизировать процесс, передав аргументы функции и использовать проверку не разные типы.
Смотреть консоль.
let style = () => {
return {
wrapper: {
width: 150,
border: '1px solid black',
color: 'red',
},
title: {
color: 'red',
height: '150px',
margin: '0 auto'
}
}
}
const obj = style();
function checkObjType(content) {
const answerArr = []
const arr = Object.values(content);
for (el of arr) {
console.log(typeof el)
typeof el === 'string' ? answerArr.push(el) : answerArr.push(`Не string ${el}`);
}
return answerArr;
}
console.log(checkObjType(obj.wrapper));
Хотя возможно это не совсем то, что нужно.