Вывод нескольких типов данных 
		
		
		
		Здравствуйте 
	Есть такой массив: 
type fruits = {
	id: string,
	data: string
}
type vegetables = {
	id: string,
	text: string
}
let arr: (fruits | vegetables)[] = [
        {id: "1", data: "sadsa"}, 
        {id: "2", text: "sdsadsa"}
]
Как из такого массива можно достать объект с параметром text, так чтоб TS не жаловался? console.log(arr.text)  | 
	
		
 Цитата: 
	
 
type fruits = {
	id: string,
	data: string
}
type vegetables = {
	id: string,
	text: string
}
let arr: (fruits | vegetables)[] = [
        {id: "1", data: "sadsa"}, 
        {id: "2", text: "sdsadsa"}
]
const o = arr[1] as vegetables
console.log(o.text)
 | 
	
		
 :write: если js 
	
let arr = [
        {id: "1", data: "sadsa"},
        {id: "2", text: "sdsadsa"}
]
let o = arr.find(a => "text" in a)
console.log(o)
 | 
	
		
 Для TS еще вот так прокатит 
	
if ('text' in arr[1]) console.log(arr[1].text)
 | 
	
		
 Еще можно так: 
	
type fruits = {
	id: string,
	data: string
}
type vegetables = {
	id: string,
	text: string
}
let arr = [
        {id: "1", data: "sadsa"} as fruits, 
        {id: "2", text: "sdsadsa"} as vegetables,
] as const;
console.log(arr[0].data);
ts playground Или так: 
type fruits = {
	id: string,
	data: string
}
type vegetables = {
	id: string,
	text: string
}
let arr: readonly [fruits, vegetables] = [
        {id: "1", data: "sadsa"}, 
        {id: "2", text: "sdsadsa"},
];
console.log(arr[0].data);
ts playground  | 
	
		
 Если хотите работать "свободно" - можно тупо не задавать тип arr, автовыеденный будет: 
	
({
    id: string;
    data: string;
    text?: undefined;
} | {
    id: string;
    text: string;
    data?: undefined;
})[]
 Однако по-хорошему, тип для надёжности и чёткости стоит задавать именно так как вы его задали, а перед выводом проверять что именно вы выводите. 
if('text' in arr[1]) console.log(arr[1].text);
 Это самый правильный подход, если в массиве могут оказаться разные значения.P.S. По-хорошему типы надо называть с большой буквы. По-хорошему в вашем случае они должны быть в едиственном числе(потому что обозначают одну сущность, а не много). В идеале для каждого типа стоит иметь тайпгард и применять именно его для сужения типа, вместо проверки каких-то свойств. Примерно так: 
type Fruit = {
  id: string,
  data: string
}
const isFruit = (arg: any): arg is Fruit => !!arg && typeof arg.id === 'string' && typeof arg.data === 'string';
type Vegetable = {
  id: string,
  text: string
}
const isVegetable = (arg: any): arg is Vegetable => !!arg && typeof arg.id === 'string' && typeof arg.text === 'string';
let arr: Array<Fruit | Vegetable> = [
  {id: "1", data: "sadsa"}, 
  {id: "2", text: "sdsadsa"}
]
if (isVegetable(arr[1])) console.log(arr[1].text);
 | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
  | 
| Часовой пояс GMT +3, время: 03:16. |