如何使用变形编译器4.2+ (或ts- TypeScript 10+)从以下内容中提取:
export type A = Record导出类型别名A
是对
并通过它
&
那就是
也是一个类型别名。
使用两个类型参数,
获取每个对象的名称/约束/默认值。
发布于 2021-02-27 23:43:36
由于TS4.2中的行为发生了变化,到目前为止,我能想到的最好的方法就是遍历AST并检查类型别名的类型节点。不过,也许有更好的办法...
在ts变形中:
const aTypeAlias = sourceFile.getTypeAliasOrThrow("A");
const typeNode = aTypeAlias.getTypeNodeOrThrow();
if (Node.isTypeReferenceNode(typeNode)) {
// or do typeNode.getType().getTargetType()
const targetType = typeNode.getTypeName().getType();
console.log(targetType.getText()); // Record
for (const typeArg of typeNode.getTypeArguments()) {
console.log(typeArg.getText()); // string both times
}
}使用编译器API:
const typeAliasDecl = sourceFile.statements[0] as ts.TypeAliasDeclaration;
const typeRef = typeAliasDecl.type as ts.TypeReferenceNode;
console.log(checker.typeToString(checker.getTypeAtLocation(typeRef.typeName))); // Record
for (const typeArg of typeRef.typeArguments ?? []) {
console.log(checker.typeToString(checker.getTypeAtLocation(typeArg))); // string
}https://stackoverflow.com/questions/66389805
复制相似问题