Я пытаюсь найти правило tslint в tslint.yml
, которое исключит любое использование индексируемых типов (например, { [key: string] : string }
) вместо использования записей TypeScript (например, Record<string, string>
), но безуспешно на данный момент.
Я наткнулся на правило tslint, известное как Ban-Types , которое запрещает типы, соответствующие данному регулярному выражению. Я попробовал следующее
tslint.yml
ban-types: [
true,
[ "{\s*\[\s*(\S+)\s*:\s*(.+)\s*\]\s*:\s*(.+)\s*}",
"Do not use indexable types (i.e. { [index: A] : B } ). Use Record<A, B> instead." ],
]
, но выдает эту ошибку:
unknown escape sequence at line 23, column 10:
[ "{\s*\[\s*(\S+)\s*:\s*(.+)\s*\]\s*: ...
^ in /path/to/tslint.yml
Я попытался еще раз со следующим регулярным выражением:
tslint.yml
ban-types: [
true,
[ "\\{\\s*\\[\\s*(\\S+)\\s*:\\s*(.+)\\s*\\]\\s*:\\s*(.+)\\s*\\}",
"Do not use indexable types (i.e. { [index: A] : B } ). Use Record<A, B> instead." ],
]
, которые не вызвали никаких исключений, но не смогли обнаружить индексируемые типы.
Реализацию правила можно найти здесь , если это поможет.