Skip to content

Latest commit

 

History

History
131 lines (115 loc) · 7.71 KB

typescript-basics.md

File metadata and controls

131 lines (115 loc) · 7.71 KB

Typescript basics

Задание состоит из 2 частей:

Оценка 1-й части (максимум 60 баллов)

Баллы за описание функций при помощи JSDoc

Проверяется код из коммита, отмеченного тегом, обозначающим завершение 1-й части. Контроллеры и другие сущности помимо пользовательских функций описывать не обязательно. Расчет количества баллов осуществляется по формуле
X = (A / B) * 50 Где X - количество баллов, округленное до целого числа вверх
A - количество пользовательских функций, имеющих правильное JSDoc-описание
A = cумма результатов вычисления выражения 1 * k для каждой пользовательской функции, где:

  • k = 0, если JSDoc-описание полностью неправильное или отсутствует
  • k = 0.5, если JSDoc-описание содержит ошибки в части типов или фактического описания работы функции (без учета орфографических, пунктуационных ошибок)
  • k = 1, если JSDoc-описание корректно
    B - общее количество пользовательских функций

Примеры JSDoc-описаний

Корректное описание

/**
 * Returns the sum of a and b
 * @param {number} a first term
 * @param {number} b second term
 * @returns {number} Sum of a and b
 */
const sum = (a, b) => a + b;

Частично корректное описание (отсутствует описание одного из входных параметров)

/**
 * Returns the sum of a and b
 * @param {number} a first term
 * @returns {number} Sum of a and b
 */
const sum = (a, b) => a + b;

Некорректное описание (неправильные описание функции и возвращаемого значения, отсутствует описание одного из входных параметров)

/**
 * Returns the square root from a
 * @param {number} a first term
 * @returns {number} string "OK" or "NOT_FOUND"
 */
const sum = (a, b) => a + b;

Дополнительные баллы

За добавление в package.json скрипта "doc", который генерирует страницу с документацией на основе JSDoc-описаний +10 баллов

Оценка 2-й части (максимум 190 баллов)

  • За каждый успешно пройденный тест +10 баллов (максимум 170 баллов)
  • В проекте настроен ESLint и имеется tsconfig.json с конфигурацией не менее строгой, чем нижеприведенная +20 баллов
{
  "compilerOptions": {
    "target": "es2020",
    "module": "es2020",
    "allowJs": false,
    "outDir": "./build",
    "rootDir": "./src",
    "downlevelIteration": false,
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "noUncheckedIndexedAccess": true,
    "noPropertyAccessFromIndexSignature": true,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "exclude": [
    "node_modules/"
  ],
  "include": [
    "../src/**/*.ts"
  ]
}

Pull Request должен быть один, после выполнения второй части. Он должен содержать информацию о коммите с решением 1 части задачи (должен быть отмечен соответствующим тегом)

Штрафы:

  • Наличие изменений в тестах либо в workflow минус 100 баллов
  • Внесение изменений в репозиторий после дедлайна не считая коммиты, вносящие изменения только в Readme.md минус 30% от максимального балла за задание (для этого задания 75 баллов)
  • Не все файлы с кодом в папке src имеют расширение .ts -50 баллов
  • За каждую ошибку линтера при запуске npm run lint на основе локального конфига -10 баллов (именно errors, не warnings)
  • Имеются явно указанные типы any, unknown -20 баллов за каждое использование
  • За отсутствие отдельной ветки для разработки -20 баллов
  • За отсутствие Pull Request -20 баллов
  • За неполную информацию в описании Pull Request (отсутствует либо некорректен один из 3 обязательных пунктов) -10 баллов
  • За отсутствие тега на коммите с решением 1 задачи или отсутствие его упоминания в Pull Request -30 баллов
  • Меньше 3 коммитов в каждой таске, не считая коммиты, вносящие изменения только в Readme.md-20 баллов

Итоговая оценка за задание = оценка за 1 часть + оценка за 2 часть - штрафы

Подсказки:

Как увидеть различия для папок test и .github между текущей веткой и веткой master из темплейта

Помимо несовпадения, отображаемого в workflow во время пулл реквеста (MD5 check), есть следующий способ:

  1. Открыть глобальный .gitconfig: git config --global -e
  2. Добавить в глобальный .gitconfig следующие строки. Если вы не используете VSCode замените code на соответстующую вашей IDE команду (или путь к выполняемому файлу).
  [diff]
    tool = vscode
  [difftool "vscode"]
    cmd = code --wait --diff $LOCAL $REMOTE
  1. Добавить в качестве дополнительного удаленного репозитория темплейт
  git remote add template https://github.com/rolling-scopes-school/nodejs-course-template.git
  1. Создать локальную копию ветки master из темплейта git fetch template master:template-master
  2. Запустить сравнение для текущей ветки с веткой master темплейта для тестов git difftool <название текущей ветки> template-master test/
  3. Запустить сравнение для текущей ветки с веткой master темплейта для workflow git difftool <название текущей ветки> template-master .github/