type StrType = string | null | undefined
type ObjStr<T> = {
[Key in keyof T as [T[Key], T[Key] & StrType] extends [StrType, T[Key]] ? Key : never]: StrType;
};
function getStrValue<T>(obj: T & ObjStr<T>, key: keyof ObjStr<T>): StrType {
return obj[key];
}
только чуть подправил ObjStr, он стал почти как этот мой OmitNonStrFields, чтобы не терялись поля, у которых тип - подмножество строк:
type ObjStr<T> = {
[Key in keyof T as [T[Key], string] extends [string, T[Key]] ? Key : never]: string
}
function getStrValue<T>(obj: T & ObjStr<T>, key: keyof ObjStr<T>): string {
return obj[key];
}
Просто нужно будет показывать приложение скоро
Я полагаю, что у вас скрипт пытается загрузиться по абсолютному урлу, с диска, а не с дев-сервера.
Vite вообще грешит таким, особенно на Windows, все еще сырой, все еще корявый.
vite preview
, он запустит сервер с использованием сбилженых файлов.
но выше я говорил про юнион типаstring | number
.Забей, твоё решение правильное, я что-то давно сложные типы не писал, забыл как сравнение юнионов работает. :D