Строгий способ иметь только опции - использовать массивы только для чтения, как показано ниже:
function showTab<T extends ReadonlyArray<any>>(options: T, selected: T[keyof T]) { }
const array = ['hello', 'mello'] as const;
const array2 = ['hello', 'mello', 5] as const;
showTab(array, 'hello');
showTab(array2, 'hello');
showTab(array2, 5);
showTab(array, 'hell'); // Error
showTab(array2, '3'); // Error
showTab(array2, 'hell'); // Error
Площадка TS здесь: ссылка
Причина в том, что поиск значений работает только для массивов stati c, их можно получить несколькими способами, и проще всего использовать массив только для чтения. Кроме того, только чтение должно дополнять ваш код, так как вкладки могут не измениться в любом случае.