Переход на TypeScript

Отказ от ответственности: я не разработчик игр. Я зарабатываю на жизнь программированием веб-приложений и иногда делаю игры для развлечения. Так что не воспринимайте это как руководство по разработке игр, потому что я, вероятно, все делаю неправильно.

Я не фанат TypeScript. Любой, кто работал со мной, следит за мной в Твиттере или был рядом со мной, вероятно, слышал мои разглагольствования. Не то чтобы я против статически типизированных языков, но мне кажется, что TypeScript пытается исправить то, что не сломано. Да, я твердо верю, что JavaScript не сломан. Большинство людей, которые продолжают жаловаться на JavaScript, не нашли времени, чтобы понять язык.

Но да, TypeScript. Это должно сделать ваш код более надежным, избежать ошибок, бла-бла-бла. Я немного скептически отношусь ко всем этим общим утверждениям. И я не одинок в этом, как упоминает Эрик Эллиотт в The TypeScript Tax:

«Кажется, безопасность типов не имеет большого значения. Сторонники TypeScript часто говорят о преимуществах безопасности типов, но мало доказательств того, что безопасность типов сильно влияет на плотность ошибок в продакшене».

К настоящему моменту вы можете подумать "но подождите, разве этот пост не назывался Переход на Typescript?". Да, несмотря на все эти разглагольствования, я перевел код игры на TypeScript и не жалею об этом.

Причина, по которой я перешел на TypeScript, главное преимущество, которое я вижу по сравнению с JavaScript и о котором меньше всего упоминают, когда люди говорят хорошие вещи о TypeScript, — это опыт разработчика.

Видите ли, у Phaser 3 не самая лучшая документация. Довольно сложно найти что-то там, и большую часть времени мне действительно трудно понять, как все связано. Кроме того, сам по себе Phaser не слишком упрощает работу разработчика (например, функции с большим количеством параметров вместо использования объекта с ключами, что делает код более понятным).

TypeScript действительно помогает упростить этот путь и значительно сократить количество обращений к документации. Я могу видеть, какой параметр ожидает функция, в каком порядке и что возвращается. Каковы доступные свойства спрайта или сцены. Это правда, что вы можете иметь проверку типов с помощью JavaScript, фактически не используя TypeScript в своих файлах, но если вы делаете это, я думаю, что стоит пройти весь путь и использовать TypeScript на полную катушку.

Не все так хорошо и хорошо, правда в том, что Phaser и TypeScript не очень хорошо работают вместе, документации еще меньше, а в DefinitelyTyped Phaser-типов на данный момент нет (поэтому их нужно вручную добавить » в свой проект и не забудьте обновить их при обновлении версии Phaser). Но в целом оно того стоит.

Означает ли это, что теперь я хочу использовать TypeScript во всех своих проектах? Конечно нет. Если вы используете более простой фреймворк с хорошей документацией, я не думаю, что это добавит столько же. Но для Phaser TypeScript спас мой рассудок.

В последнее время я не публиковал дневник разработчиков, но это не значит, что я не работал над игрой! Если вам интересно узнать о прогрессе, вот как он выглядит на данный момент:

Графика и анимация не являются окончательными, но они дают представление о том, как это будет выглядеть. Я очень счастлив!