Я уже видел этот другой вопрос, но хотя имя похоже, вопрос на самом деле другой, потому что они пытаются получить тип свойства, который оказывается таким же, как аргумент универсального типа, но я пытаюсь получить фактический аргумент разрешенного типа, потому что я хочу получить тип T
из Array<T>
, а внутри типа массива нет свойства типа T
.
Итак, у меня есть такая функция:
import ts from 'typescript'
function convertType(tc: ts.TypeChecker, type: ts.Type) {
if (type.symbol.name === 'Array') {
debugger;
// How do I get the resolved type of T?
}
else {
//...
}
}
Я заметил, что если я отлажу функцию и наведу курсор на type
, у нее будет свойство с именем resolvedTypeArguments
, которое будет иметь именно тот тип, который мне нужен. Так что я мог бы просто сделать (type as any).resolvedTypeArguments
, но это было бы взломом, и мне интересно, есть ли официальный способ сделать это.
Я предполагал, что мне придется использовать одну из функций is...
, чтобы преобразовать тип во что-то, имеющее свойство resolvedTypeArguments
, но нигде во всем файле typescript.d.ts нет упоминания о resolvedTypeArguments, поэтому кажется, что я вообще не должен иметь доступа к этому члену.