Может ли TypeScript быть настроен на ошибку при логическом сравнении принудительного приведения? - PullRequest
0 голосов
/ 26 декабря 2018

То есть, я хочу пометить его как ошибку, если мой код делает что-то вроде этого:

const s = “true”
if (s === true)

Возможно?

РЕДАКТИРОВАТЬ:

Этострока кода, которая меня задела:

const showPlanToAttendOption =
     e.target.attributes["datashowplantoattendoption"].value;

Затем сравните значение true с приведенным выше.

Я преобразовал его в приведенный ниже для работы.Я бы предпочел ошибку

const showPlanToAttendOption = 
    e.target.attributes["data-showplantoattendoption"].value == "true";

1 Ответ

0 голосов
/ 26 декабря 2018

Если условие всегда ложно из-за отсутствия перекрытия типов, TypeScript сообщит вам об этом.

declare const something: string;

if (something === true) {} // Error: This condition will always return 'false' since the types 'string' and 'boolean' have no overlap.

Однако при использовании неявного принуждения все может быть сложно.Чтобы получить ошибку в таком сценарии, как этот:

declare const something: string;

if (something) {} // [strict-boolean-expressions] This type is not allowed in the 'if' condition because it could be undefined. Only booleans are allowed.

вам понадобится TSLint и его строго-логические выражения rule.

...