Pull to refresh

Comments 6

Здорово, что пишете о необходимости строгих проверок, но тема строгости не раскрыта. Мало выставить строгие проверки, нужно ещё код писать по-другому — где-то дополнительно описывать типы, где-то добавить проверки для сужения типов. К примеру, с выключенным «strictNullChecks» такой код успешно скомпилируется:

const foo: number = null;

Тип объявлён как number, а присвоить туда можно null. Такой код — источник известной проблемы Null Pointer Exception. Тут нужно либо сменить тип на number | null либо проанализировать код и задаться вопросом — а можно ли здесь вообще обойтись без null? Если foo сразу инициализовать числом, то null окажется ненужным. Необходимость писать код по-другому касается и других строгих опций, в особенности «strictPropertyInitialization» и «noImplicitAny».

Для того, чтобы TypeScript был более строгим не только TS-файлах, но в Angular-шаблонах нужно включать опцию 'fullTemplateTypeCheck' в tsconfig.json:

{
    "compilerOptions": { ... },
    "angularCompilerOptions": {
        "fullTemplateTypeCheck": true
        ...
    }
}

Половина опций в вашем tsconfig.json лишняя, так как strict: true уже включает в себя «noImplicitAny», «noImplicitThis», «alwaysStrict», «strictBindCallApply», «strictNullChecks», «strictFunctionTypes» и «strictPropertyInitialization»: www.typescriptlang.org/docs/handbook/compiler-options.html

Так и не понял зачем в статью о строгом Ангуляре включать настройку гита и баш-скрипты для NVM под макось.

Спасибо за комментарий. Добавил в статью про fullTemplateTypeCheck.

Пусть об этом позаботится команда Angular CLI. На данный момент я считаю что eslint еще не готов заменить все фичи tslint для typescript и шаблонов Angular.

Это лучший мануал, что я видел, ведь только в нем описано то, чего так не достает всем остальным!


husky — устанавливает руки

Без этого нельзя разрабатывать на любом языке программирования!

)) Забавно получилось. Спасибо что заметили, исправил.

Sign up to leave a comment.

Articles