Существует множество параметризованных псевдонимов типов, которые используются в машинописном тексте, и иногда бывает трудно определить, какой фактический тип находится ниже всех уровней абстракции. Есть ли способ нормализовать конкретный тип, удалить из него все псевдонимы типов?
Например, если у меня есть эти типы:
type Maybe<T> = T | null
type Num = number
type Base = {
a: Num
b: boolean
c: Maybe<{ x: Num }>
}
type Hello = Pick<Base, 'a' | 'c'>
Я хочу каким-то образом показать, что Hello
такой же как:
type Hello = {
a: number
c: { x: number } | null
}
Меня также интересует, есть ли способ выполнить поверхностную нормализацию и преобразовать Pick<Base, 'a' | 'c'>
в
type Hello = {
a: Num
c: Maybe<{ x: Num}>
}