Comments 6
Здорово, что пишете о необходимости строгих проверок, но тема строгости не раскрыта. Мало выставить строгие проверки, нужно ещё код писать по-другому — где-то дополнительно описывать типы, где-то добавить проверки для сужения типов. К примеру, с выключенным «strictNullChecks» такой код успешно скомпилируется:
Тип объявлён как number, а присвоить туда можно null. Такой код — источник известной проблемы Null Pointer Exception. Тут нужно либо сменить тип на number | null либо проанализировать код и задаться вопросом — а можно ли здесь вообще обойтись без null? Если foo сразу инициализовать числом, то null окажется ненужным. Необходимость писать код по-другому касается и других строгих опций, в особенности «strictPropertyInitialization» и «noImplicitAny».
Для того, чтобы TypeScript был более строгим не только TS-файлах, но в Angular-шаблонах нужно включать опцию 'fullTemplateTypeCheck' в tsconfig.json:
Половина опций в вашем tsconfig.json лишняя, так как strict: true уже включает в себя «noImplicitAny», «noImplicitThis», «alwaysStrict», «strictBindCallApply», «strictNullChecks», «strictFunctionTypes» и «strictPropertyInitialization»: www.typescriptlang.org/docs/handbook/compiler-options.html
Так и не понял зачем в статью о строгом Ангуляре включать настройку гита и баш-скрипты для NVM под макось.
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 под макось.
0
Используйте ESLint вместо TSLint https://github.com/palantir/tslint/issues/4534
0
Это лучший мануал, что я видел, ведь только в нем описано то, чего так не достает всем остальным!
husky — устанавливает руки
Без этого нельзя разрабатывать на любом языке программирования!
0
Sign up to leave a comment.
Строгие правила для нового приложения на Angular