Как экспортировать класс машинописного текста, но сохранить частную связь с var

Изобразите этот пример:

const hidden = Symbol()

export class Foo {
  static [hidden] = 'I dont want another touch this'
}

Отчет компилятора: ошибка TS4028: общедоступное статическое свойство «[скрытый]» экспортированного класса имеет или использует частное имя «скрытый».

Да, я знаю, что «скрытый» - это личное. Я просто не хочу его экспортировать.

Есть ли способ подавить эту ошибку?


person colder    schedule 08.03.2018    source источник


Ответы (1)


Это проблема, только если вы отправляете файлы объявлений с --declaration параметр компилятора. Если вам не нужны файлы объявлений, отключите эту опцию, и ошибка должна исчезнуть.

Если вы действительно хотите создать файл декларации, тогда существует экспериментальная опция компилятора --stripInternal, которая не будет генерировать декларацию для любого кода, помеченного /** @internal */. Пример:

const hidden = Symbol()

export class Foo {
    /** @internal */
    static [hidden] = 'I dont want another touch this'
}

Это должно заглушить ошибку. Это работает для вас?

person jcalz    schedule 08.03.2018
comment
Полезно знать о stripInternal. В качестве альтернативы, если вы не хотите раскрывать его, может быть, вы можете сохранить его как локальную переменную модуля? - person unional; 08.03.2018