Учитывая идентификатор типа, я ищу способ для генерации полного выцветания объекта типа AST. Например, если у меня есть:
File1.ts
type Content = {
title: string,
image: string,
dims: number[]
}
File2.ts
type BlogPost = Pick<Content, 'title'|'image'>
type User {
name: string,
email: string,
news: BlogPost[]
}
File3.ts
const test: User = { ... };
Мой код должен быть в состоянии вывести из идентификатора пользователя такой список:
name
email
news.title
news.image
Я экспериментировал с несколькими вещами: используя checker.getTypeAtLocation
, перебирая каждое свойство по одному, найдите правильный символ и попытайтесь определить имена свойств.
Но я думаю (надеюсь), что этот метод слишком сложен для выполнения sh таких простых вещей, потому что мне приходится обрабатывать, помимо типов объектов, каждую возможность типов для свойств: Picks, Exclude, Array , Omit, KeyOf, ...
Все, что я хочу, это список свойств окончательной полной формы типа.
Поэтому мой вопрос:
Предоставляет ли API компилятора Typescript инструменты, помогающие мне в моих поисках? Например, для типа, подобного этому:
type Content = { title: string, id: number }
type Hello = Pick< Content, 'id' >
Создайте окончательный и полный AST, например, так:
type Hello = {
id: number
}
Спасибо за вашу помощь