У меня есть следующие типы:
interface A { a: string }
interface B extends A { b: string }
interface C extends A { c: string }
Теперь я хочу написать следующую функцию, которая возвращает A
:
function test(t: number): A {
return t > 10
? { a: "a", b: "b" }
: { a: "a", c: "c" };
}
Это работает, только если я явно приведувозвратил объекты в A
, B
или C
, или если я создаю отдельные функции, которые явно возвращают либо B
, либо C
, и использую их для построения объекта.
Есть лиВ любом случае компилятор может сделать вывод, что возвращаемый объект на самом деле является B
или C
и, следовательно, также A
, без необходимости указывать это?