Sobes.tech
Back to questions
Middle
1

Как типизировать функцию, которая принимает unknown и возвращает конкретный тип, чтобы TypeScript навсегда считал возвращаемое значение этим типом?

Companies where asked
Электронные офисные системы

Answer from AI

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.