Тип возвращаемого значения должен быть таким же, как у этого объекта, но сужен аналогично тому, как работают константные утверждения.
Этого можно достичь, передав тип в качестве параметра типа функция.
function myFn<T>(args): T {
// do stuff
return null;
}
const a = myFn<{ a: "first"; b: "second" }>(args);
type MyObj = { a: "first", b: "second" }
const a = myFn<MyObj>(args);
К сожалению, объект должен быть полностью определен во время компиляции, поскольку типы недоступны во время выполнения.
Старый ответ (неверно истолкован)
Если вы хотите, чтобы возвращаемый тип совпадал с типом аргумента. Затем вы можете использовать параметр типа generi c.
function MyFunction<T>(argument1: T, anotherArg: number): T {
// do stuff
}
// result will be of type User
const result = MyFunction<User>(user, 9);
В некоторых случаях вы можете просто сделать.
// user must be defined as type User above somewhere
const result = MyFunction(user, 9);