Typescript: запретить использование «.name» для получения имени функции / класса

#javascript #typescript

#javascript #typescript

Вопрос:

есть ли простой способ (возможно, правило tslint) запретить нам использовать MyClass.name , или myFunction.name ?

Мы пытаемся убедиться, что ни один разработчик не будет использовать это, поскольку процесс минимизации изменит имена методов.

Спасибо!

Комментарии:

1. Эй, я думаю, вы немного упускаете из виду вопрос. «Мы пытаемся убедиться, что любой разработчик в конечном итоге использует их», к чему это относится?

2. извините, я не проверял, что я написал, я это исправил.

3. Да, пользовательское правило компоновки должно быть в состоянии это сделать

Ответ №1:

Непроверенный, поэтому пробег может варьироваться от 0 до 100, но вы можете попробовать следующее. Внутри глобального / окружающего ts-файла напишите:

 declare global {
  interface Function {
    /** @deprecated Don't use this, think about the children!*/
    readonly name: string;
  }
}
  

Затем установите в вашей конфигурации tslint:

 "rules": {
  "deprecation": true
}
  

Возможно, это предупредит разработчика об устаревании, но есть также вероятность, что оно игнорируется, поскольку в типах библиотек нет этого комментария

Комментарии:

1. Я вроде как помогаю, но это все равно позволяет создавать javascript … это всего лишь предупреждение… Я думал о чем-то более навязчивом… может быть, мне придется самому создать правило tslint?