Назад к вопросам
Middle
2
Как типизировать функцию, которая принимает unknown и возвращает конкретный тип, чтобы TypeScript навсегда считал возвращаемое значение этим типом?
Компании, где спрашивали
Электронные офисные системы
Ответ от нейросети
sobes.tech AI
Чтобы типизировать функцию в TypeScript, которая принимает unknown и возвращает конкретный тип, и при этом TypeScript всегда считал возвращаемое значение именно этим типом, можно использовать утверждение типа (as) или пользовательский тип-гард.
Например, если функция преобразует unknown в тип MyType и мы уверены в корректности преобразования:
type MyType = { name: string; age: number };
function parseToMyType(value: unknown): MyType {
// здесь можно добавить проверки, если нужно
return value as MyType;
}
const result = parseToMyType(someUnknownValue);
// TypeScript теперь считает result типа MyType
Если нужна более строгая проверка, можно реализовать функцию-предикат:
function isMyType(value: unknown): value is MyType {
return typeof value === 'object' && value !== null &&
'name' in value && typeof (value as any).name === 'string' &&
'age' in value && typeof (value as any).age === 'number';
}
function parseToMyType(value: unknown): MyType {
if (isMyType(value)) {
return value;
}
throw new Error('Invalid type');
}
Так TypeScript гарантированно знает, что возвращаемое значение — MyType.