Перейти к основному содержанию

Добавление определений типов и автодополнения к вашим модулям


Добавление определений типов и автодополнения к вашим модулям

Автоматически переведённая страница

К сожалению, на полный ручной перевод у нас не хватает ресурсов.
Если вы увидели ошибку — отправьте пул-риквест с исправлениями (ссылка для редактирования в конце страницы).

Сt.js поддерживает добавление определений типов для котомодов. С их помощью вы можете обеспечить живые проверки типов, автодополнение и подробную документацию при наведении пользователя на имена методов вашего модуля.

Ct.js будет искать файл types.d.ts в корневой директории вашего модуля. Например, у place и pointer такие есть. types.d.ts — это файл объявлений TypeScriptopen in new window, специальный файл в формате манифеста, который описывает методы и переменные, предоставляемые вашим модулем. Дополнительную информацию можно найти в документации TypeScriptopen in new window.

Сам по себе файл объявлений может обеспечивать только проверки типов и список автодополнений. С помощью аннотаций в стиле JSDocopen in new window и markdown-комментариев вы можете получить подробную документацию прямо в редакторе.

Пример: описание модуля

Файл types.d.ts для воображаемого модуля под названием sosiska будет выглядеть следующим образом:

/**
 * Модуль для жарки гибких колбасок внутри вашей игры.
 */
declare namespace sausage {
    /* Здесь идут все методы и свойства */

    /**
     * Жарит копию, добавляя хрустящую корочку
     * @param {Copy} me Копия, которая должна быть обжарена
     */
    function roast(me: Copy): void;

    /**
     * Накрывает копию кетчупом. Потребляет `sosiska.ketchup`.
     * @param {Copy} me Копия, на которую нужно налить кетчуп
     * @param {boolean} tonsOfKetchup Если установить значение `true`, то будет использовано огромное количество кетчупа для этой конкретной копии
     */
    function addKetchup(me: Copy, tonsOfKetchup?: boolean): void;

    /**
     * Количество оставшегося кетчупа
     */
    var ketchup: number;
}

Пример: описание новых полей и функций для встроенных типов

Расширение класса, такого как Copy или Background, более сложное, поскольку TypeScript не поддерживает слияние деклараций классов непосредственно. Вам придется использовать интерфейсы:

interface BasicCopy {
    /**
     * Жарит вашу копию, добавляя хрустящую корочку
     */
    function roastMe(): void;
    /**
     * Мера того, насколько сильно была обжарена ваша копия
     */
    roastiness: number;
}

Выходные данные выше будут отображать метод roastMe и параметр roastiness в автозаполнении для всех копий в ct.IDE и проверять ваш код на ошибки типизации.

Встроенные классы

В Ct.js есть несколько классов, представляющих игровые сущности. Вы должны использовать эти имена для описания аргументов и свойств вашего модуля (как видно в разделе "описание модуля").

Так ct.IDE сможет предоставить разумные автозаполнения для ваших полей и аргументов функций.