Получить значение инициализатора с помощью API-интерфейса компилятора TypeScript - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть простой класс, из которого я извлекаю информацию, используя ts.createSourceFile:

export default class Button extends Vue {
  @Prop({ type: [String], required: false }) type!: string
}

Как мне извлечь значение false из параметра декоратора required выше?

Приведенный ниже код извлекается из свойства decorators[0].expression.arguments[0].properties, где escapedText равно required:

NodeObject {
  pos: 237,
  end: 253,
  flags: 0,
  modifierFlagsCache: 0,
  transformFlags: 0,
  parent: undefined,
  kind: 279,
  decorators: undefined,
  modifiers: undefined,
  name:
   IdentifierObject {
     pos: 237,
     end: 246,
     flags: 0,
     modifierFlagsCache: 0,
     transformFlags: 0,
     parent: undefined,
     kind: 75,
     escapedText: 'required' },
  questionToken: undefined,
  exclamationToken: undefined,
  initializer:
   TokenObject {
     pos: 247,
     end: 253,
     flags: 0,
     modifierFlagsCache: 0,
     transformFlags: 0,
     parent: undefined,
     kind: 90 } }

Где находится значение false? Должен ли я использовать SyntaxKind от kind?

1 Ответ

0 голосов
/ 09 апреля 2020

Похоже, prop.initializer.kind === ts.SyntaxKind.TrueKeyword достаточно для определения логических значений

...